【问题标题】:How do I link my library with czmq using CMake [duplicate]如何使用 CMake 将我的库与 czmq 链接 [重复]
【发布时间】:2019-08-28 12:03:44
【问题描述】:

我在使用 CMake 时无法找到链接 czmq 库的方法。我可以使用 gcc myprog.c -lczmq 的 czmq 库编译代码就好了。

我的项目结构如下:

src/...
include/...
build/...
CMakeLists.txt

src/ 文件夹包含.c 文件和相应的.h 文件。 include/ 文件夹包含库头。

我当前的CmakeLists.txt 看起来像这样:

cmake_minimum_required(VERSION 3.10)

project(mylib)
set(CMAKE_BUILD_TYPE Release)

#Header
include_directories(include)

#Src files, GLOB allows for wildcard additions
file(GLOB SOURCES "src/*c")

#Generate the shared library from the sources
add_library(mylib SHARED ${SOURCES})

#Set location for the library installation
install(TARGETS mylib DESTINATION .)

【问题讨论】:

  • 那个副本没有回答我的问题,因为当我编译使用创建的库的代码时,我仍然必须添加 -lczmq 标志。

标签: c linux cmake zeromq


【解决方案1】:

CMAKE_EXE_LINKER_FLAGS 设置为您希望链接器使用的任何选项:

SET(GCC_LINK_FLAGS "-lczmq")

然后将标志附加到 CMake 变量中:

SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COMPILE_FLAGS}")

【讨论】:

  • 变量CMAKE_EXE_LINKER_FLAGS-l 标志的错误位置:此变量的内容出现在目标文件之前链接器的命令行,而-l 标志的正确顺序是目标文件之后。应使用命令target_link_libraries 而不是CMAKE_EXE_LINKER_FLAGS
最近更新 更多