2

add_custom_command は常に古くなっているため、すべてのビルドで実行されるという問題があります。カスタム コマンドは、同じプロジェクトのターゲットであるツールを実行して、別のターゲットで使用されるファイルを生成します。

add_executable(GeneratorTool main.cpp)

add_custom_command(
    OUTPUT generated.h
    COMMAND GeneratorTool
    DEPENDS main.cpp
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    COMMENT "** GeneratorTool **"
)

add_library(MyLib STATIC generated.h ...)

ビルド出力 (visual studio 2010) には常に ** GeneratorTool ** が表示されます。generated.h が存在し、main.cpp よりも新しくなると、再度ビルドされないことが予想されます。何か案は?

ありがとう、ヨッヘン

4

2 に答える 2

2

まず、の代わりにDEPENDSGeneratorToolをインストールできます。すでに依存しています。add_custom_commandmain.cppGeneratorToolmain.cpp

generated.h次に、生成された.hの再構築を強制するのは、その場所があいまいである可能性が最も高いです。

MyLibがgenerated.h正しい場所を探すようにしてください。

私の盲目的な推測は試してみることです:

add_library(MyLib STATIC ${CMAKE_CURRENT_SOURCE_DIR}/generated.h ...)
于 2011-12-22T11:23:51.717 に答える