2016-12-03 2 views
1

私は、インテルパフォーマンスプリミティブを使用するもっと大きなプロジェクトの一部であるプログラムに変更を加えました。私の最近の変更は、IPPの最新バージョンでのみ利用可能なコールを使用することが判明しましたが、多くのユーザーは引き続き古いバージョンを使用していました。問題のプログラムは必須ではないので、IPPの古いバージョンに移植するのではなく、オプションにしたいと考えています(IPPには長年のAPIの変更がたくさんありました)。automakeにオプションのコンパイルルールを生成させる

Makefileの生成にautomake/autoconfを使用します。理想的には、私の特定のプログラム(Cの単一ソースファイル)は、誰かが特に "make myprog"を実行しない限り、デフォルトではコンパイルされません。

これを行う方法はありますか、またはconfigureスクリプトの "--with-myprog"オプションをサポートする必要がありますか?

Makefile.amは現在、私のプログラムは、これを行うには権利の方法は、あなたのビルドを配置することですgenerateVDIF

答えて

1

bin_PROGRAMSではなく、単にEXTRA_PROGRAMSと宣言すれば、それはあなたが望むものと正確に一致するはずです(make myprogでのみ動作します)。

あなたはそれをインストールしたい場合は、

bin_PROGRAMS = .... 

if ENABLE_MYPROG 
    bin_PROGRAMS += myprog 
endif 

のようなものをconfigure.acAC_ARG_WITHAM_CONDITIONALを使用して、持っている必要がありますし、残りの部分は同じまま。

+0

EXTRA_PRORGRAMSは私が要求したものとまったく同じです。 check_PROGRAMSは同じことをしているようです。私はしかし、インストールオプションの欠如が痛みであることを認識しましたので、configure.acに--with-myprogオプションを追加しました。 – Chris

+0

'check_PROGRAMS'は、' make check'と 'make distcheck'の間に構築されています。これは"テスト "オプションです(他にインストールされていないいくつかの接頭辞の1つです)。 'EXTRA_'接頭辞はオプションであり、インストールされていません。 –

0

です(私は、これはすべてのことが関連していると思う)

bin_PROGRAMS = \ 
    stripVDIF \ 
    {snip} 
    generateVDIF 

generateVDIF_SOURCES = \ 
    generateVDIF.c 

generateVDIF_LDADD = $(IPP_LIBS) $(LDADD) 

を持っていますオプション プログラムは、./configureオプションの制御下にありますので、./configure が適切に管理できます。例えば、それはあまりにも多くのハードワークのように聞こえる場合how to add configure options

あなたはMakefile.am内 追加makeコードは単にMakefile生成 に通過しているという事実を悪用する可能性があります。

です。以下は、ターゲットfooためMakefile.amの場合:

EXTRA_DIST = README bar.c 
bin_PROGRAMS = foo 
foo_SOURCES = foo.c 

bar: bar.o 
    $(CC) $(LDFLAGS) [email protected] $< $(LDLIBS) 

EXTRA_DIST = README 
bin_PROGRAMS = foo 
foo_SOURCES = foo.c 

と管理対象外のターゲットbarを追加したい、bar.c、 から構築されたプログラムは、あなたがにMakefile.amを拡張することができますautotooledパッケージはmake barをサポートします。このファクト を適切な警告で文書化することができます。特に、通常のautotooled installおよびの不在が含まれます。

明らかに、このショートカットは、プロのチョップの知識のあるユーザーの印象 を明らかにしません。

+0

私はあなたがここで達成しようとしているのを見ることができますが、 "手動"のmake行にはコンパイルに必要な他のさまざまな依存関係が含まれていないため、これを動作させることができませんでした。私はそれが働くことができると確信していましたが、ディエゴの解決策はまったく同じでありません。 – Chris

関連する問題