パッケージ/ lib _SOURCESまたはパッケージ/ libフラグ(CFLAGS、LDFLAGS、LDADDなど)を条件付きで設定するときは、条件付きでパッケージのフラグに追加する方が良いでしょう例えば:ソース/フラグ/ libsのAutomake条件付き追加または変数割り当て
bin_PPROGRAMS = mypkg
mypkg_SOURCES = mypkg.c
if OS1
mypkg_SOURCES += os1.c
else
if OS2
mypkg_SOURCES += os2.c
endif
endif
または条件変数を割り当てて、パッケージの旗(人口またはnullかどうか)、などにそれら全てを連結するために:私はそれを両方の方法を見てきましたし、私が見ることができる
if OS1
os1_src = os1.c
else
if OS2
os2_src = os2.c
endif
endif
bin_PROGRAMS = mypkg
mypkg_SOURCES = mypkg.c $(os1_src) $(os2_src)
それぞれに利点。前者では、パッケージにこれらのフラグを追加する実際の最終的な動作は条件付きではっきりしており、指定されたビルドで実際には何も意味しない変数でラインを混雑させていません。後者では、パッケージに実際に含まれているものが1行に集約されており、見えない別のアペンドメントはどこかではありませんが、その不透明な変数名で何が起こっているのかは分かりません。
別のオプションは、オプション2のようにすることですが、configureスクリプト(AC_SUBSTでconfigure.ac)で変数を割り当てることです。しかし、私は設定スクリプトを純粋に利用可能な機能を検出し、Makefileで使うものを選んでいます。
そのうちの1人は、技術的な面倒な、あるいは厄介な副作用がありますか?
これは完璧な答えです、ありがとうございます。それは良い洞察でもあります。多くのオプションの1つによって代替的に提供される資産があれば、それらを単一の変数で表現します。 –