2017-11-25 15 views
0

私はmake-basedプロジェクトをcmakeに変換しようとしています。私はヘッダファイルを生成するカスタムコマンドを取得する方法とターゲット実行可能ファイルのソースファイルをコンパイルする方法を理解したが、それらをリンクすることはできない - 私はカスタムをトリガする方法を理解できないコマンドを使用してヘッダファイルを生成します。ここで私は何をしようとしているの簡単な例です:cmakeのオブジェクトファイルに依存関係を追加するには

CMakeLists.txt:

add_executable(test test.c) 
add_custom_command(OUTPUT foo.h 
    COMMAND echo "/* test */" > foo.h 
) 

test.cの:

#include "foo.h" 
int main() { return 0; } 

しかし、私はcmakeのを実行し、作るとき、それができます私:

test.cをコンパイルする前にfoo.hを最初に作成する必要があるとは思われません。 makeを使うと、依存関係を追加するだけです。どのように私はcmakeでそれをするのですか?

答えて

0

は、依存関係として実行可能なターゲットに生成されたファイルfoo.hを追加します。

add_executable(testexe test.c foo.h) 

これはcmakeのは、生成されたビルドシステム内のファイルfoo.hにターゲットtestexeのファイルレベルの依存関係を追加するようになります。

+0

これはうまくいくようですが、ヘッダファイルを使用するファイルをコンパイルしようとする前に、常にヘッダファイルを生成する必要がありますか? –

+0

解決策は、ヘッダーファイルがまだ生成されていない場合に生成されることを保証します。 – sakra

関連する問題