ALSAまたはOSSヘッダーのいずれかを必要とするアプリケーションを作成しようとしています。基本的に、/ etc / oss.confが存在しない場合は、コンパイラに定義を渡したいと思います。これは、soundcard.hヘッダーが存在しないことを意味している可能性があります(これについては、自由に修正してください。まだ新しいです。 OSSでの作業に)。OSSのドキュメントによると、次のようにincludeディレクティブを使用します。
include /etc/oss.conf
CFLAGS := -I$(OSSLIBDIR)/include/sys
1つの問題。OSSのサポートはオプションなので、ヘッダーが存在するかどうかを確認し、存在する場合は、コンパイラーに定義を渡します。問題は、ファイルがmakefileルールの外部に存在するかどうかを確認する方法がないことです。ルール内で、何らかの理由でifステートメントを使用した場合、CFLAGSを設定しようとしても変更されません。
test: $(objects)
@if [ -f ${OSS_CONFIG} ]; then \
. ${OSS_CONFIG}; \
CFLAGS+=" -I${OSSLIBDIR} -DUSE_OSS"; \
fi
@echo ${CFLAGS}
(上記は、CFLAGSの元の値が${OSS_CONFIG}存在する場合でも出力するだけです。)もちろん、これは非常に醜いので、もっとクリーンな方法があるかどうか疑問に思います。それとも、これについて私が行っている方法は、子猫の大量虐殺を含む世界的な大変動のイベントを引き起こすことになるのでしょうか?
ああ、autoconfを使うように言わないでください。