如何使用CMake将我的库与czmq链接

如何使用CMake将我的库与czmq链接,c,linux,cmake,zeromq,C,Linux,Cmake,Zeromq,在使用CMake时,我很难找到链接czmq库的方法。我可以使用czmq库和gcc myprog.c-lczmq很好地编译代码 我的项目结构如下所示: src/... include/... build/... CMakeLists.txt cmake_minimum_required(VERSION 3.10) project(mylib) set(CMAKE_BUILD_TYPE Release) #Header include_directories(include) #Src fi

在使用CMake时,我很难找到链接czmq库的方法。我可以使用czmq库和
gcc myprog.c-lczmq
很好地编译代码

我的项目结构如下所示:

src/...
include/...
build/...
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 .)
src/
文件夹包含
.c
文件和相应的
.h
文件。
include/
文件夹包含库标题

我当前的
CmakeLists.txt
如下所示:

src/...
include/...
build/...
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 .)

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

SET(GCC_LINK_FLAGS "-lczmq")
然后将标志附加到CMake变量:

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

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

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\u link\u libraries
而不是
CMAKE\u LINKER\u FLAGS
。变量
CMAKE\u EXE\u LINKER\u FLAGS
对于
-l
标志是一个错误的位置:此变量的内容显示在链接器命令行中的对象文件之前,而
-l
标志的正确顺序在对象文件之后。应该使用命令
target\u link\u libraries
而不是
CMAKE\u EXE\u LINKER\u FLAGS
。该副本没有回答我的问题,因为我在编译使用创建的库的代码时仍然必须添加
-lczmq
标志。该副本没有回答我的问题,因为我在编译代码时仍然必须添加
-lczmq
标志编译使用创建的库的代码。