2012-12-10 96 views
0

我正在尝试使用运行目标生成的文件的内容来定义一些将与另一个目标链接的库。基于执行另一个目标的结果的目标的cmake链接库

这将是这样的:

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中实现这一点?

+0

您可能尝试为文件libInfo.txt设置属性GENERATED,但我认为这没有帮助。 – Alexey

回答

0

我是很新的CMake和我只是猜测,但你可以尝试通过设置

add_dependencies(final_target lib_info_generator) 

@Alexey强制构建顺序:根据从自定义命令CMake的文档输出都会自动财产GENERATED组。所以这不会改变这种情况。

相关问题