2012-12-10 1 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 문서 출력에 따라 자동으로 재산이 생성 얻을 세트. 그래서 그것은 상황을 변화시키지 않을 것입니다.

관련 문제