2013-03-01 149 views
3

我有一個的CMakeLists.txt一個子目錄,應使用make,結果導出爲導入庫父目錄編譯庫:CMake的:鏈接到與依賴關係導入庫無法

set(static_lib ${CMAKE_CURRENT_BINARY_DIR}/lib/mylib.a) 

add_custom_command(
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 
    OUTPUT ${static_lib} 
    COMMAND make 
    COMMAND make install PREFIX=${CMAKE_CURRENT_BINARY_DIR} 
) 

add_custom_target(compile_mylib DEPENDS ${static_lib}) 

add_library(mylib STATIC IMPORTED) 
set_property(TARGET mylib PROPERTY IMPORTED_LOCATION ${static_lib}) 
add_dependencies(mylib compile_mylib) 

的在的CMakeLists.txt父目錄如下:

add_subdirectory(deps/mylib) 
add_executable(mybin source.c) 
target_link_libraries(mybin mylib) 

在OSX這工作得很好 - 但如果我編譯相同Ubuntu上似乎忽略子目錄的CMakeLists並抱怨:

/usr/bin/ld.bfd.real: cannot find -lmylib 

我使用Clang進行編譯。

回答

3

的解決方案是GLOBAL添加到您的通話add_library使其父可見的CMakeLists.txt

-1

你可以試試這個:

find_library(MYLIB mylib.a ${CMAKE_CURRENT_BINARY_DIR}/lib) 

然後設置你的鏈接庫:

target_link_libraries(mybin ${MYLIB}) 

應該工作。