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()

这不起作用,因为 libInfo.txt 在目标 lib_info_generator 执行之前不会存在。

有没有办法在 CMake 中实现这一点?

4

1 回答 1

0

我对 CMake 很陌生,我只是在猜测,但是您可以尝试通过设置来强制构建顺序

add_dependencies(final_target lib_info_generator)

@Alexey:根据自定义命令的 CMake 文档输出自动获取属性 GENERATED 集。所以这不会改变情况。

于 2012-12-12T10:26:52.773 回答