CMake:链接到具有依赖项的导入库失败

CMake:链接到具有依赖项的导入库失败,cmake,Cmake,我有一个带有CMakeLists.txt的子目录,它应该使用make编译一个库,并将结果作为导入的库导出到父目录: 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 instal

我有一个带有CMakeLists.txt的子目录,它应该使用make编译一个库,并将结果作为导入的库导出到父目录:

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上编译同样的东西,它似乎忽略了子目录的CmakeList并抱怨:

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

我正在使用Clang进行编译。

解决方案是将全局添加到您的add_库调用中,以便父CMakeLists.txt可以看到它。您可以尝试以下操作:

find_library(MYLIB mylib.a ${CMAKE_CURRENT_BINARY_DIR}/lib)
然后设置链接库:

target_link_libraries(mybin ${MYLIB})
应该是工作