0

別のターゲットに対してリンクされるいくつかのライブラリを定義するために、ターゲットの実行から生成されたファイルの内容を使用しようとしています。

これは次のようになります。

add_executable(generator zoot.cpp)

get_property(GEN_LOCATION TARGET generator PROPERTY LOCATION)

add_custom_command(OUTPUT libInfo.txt
                   COMMAND ${GEN_LOCATION}
                   DEPENDS someOtherFile.txt)

add_custom_target(lib_info_generator ALL
                  DEPENDS libInfo.txt someOtherFile.txt)

add_dependencies(lib_info_generator generator)

add_executable(final_target hi.cpp)

file(STRINGS "libInfo.txt" MY_LIB)

if(MY_LIB STREQUAL "lib1")
  target_link_libraries(final_target lib1)
else()
  target_link_libraries(final_target lib2)
endif()

ターゲット lib_info_generator が実行されるまで libInfo.txt が存在しないため、これは機能しません。

これを CMake で実装する方法はありますか?

4

1 に答える 1

0

私はCMakeにまったく慣れておらず、推測しているだけですが、設定することでビルドの順序を強制することができます

add_dependencies(final_target lib_info_generator)

@Alexey:CMakeのドキュメントによると、カスタムコマンドからの出力は自動的にプロパティGENERATEDセットを取得します。だからそれは状況を変えないだろう。

于 2012-12-12T10:26:52.773 に答える