我有一个项目,在那里我构建了一个名为myliba的库,它使用对pthread库的调用。在我的cmake项目文件中,我使用以下命令:

add_library( mylibA STATIC ${mylib_SRC} )
target_link_library( mylibA pthread )

在单独的项目中,创建使用myliba的可执行文件。我的cmake项目文件如下所示:
add_executable( myexe ${myexe_SRC} )
target_link_library( myexe mylibA pthread )

如果省略可执行项目的pthread链接,就会遇到链接问题。是需要将pthread库链接到库和可执行文件,还是我做错了什么?

最佳答案

当您建立静态程式库时,您不会连结它,因此您指定为连结相依性的任何物件都不会包含在内。
但是,从cmake 2.8.12开始,您可以指定任何使用库的人都应该使用的接口(包括文件、编译器选项等)。
在你的情况下,你可以写:

add_library(mylibA STATIC ${mylib_SRC})
target_link_libraries(mylibA INTERFACE pthread)

关于linux - CMake:库链接要求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24204870/

10-13 06:43