c++ - CMake:构建库并将其链接到可执行文件导致 undefined reference 错误

标签 c++ cmake linker

我有一个 cmake 设置,它应该首先构建一个库,然后使用该库创建一个可执行文件:

# build and install the project lib
add_library(lib${PROJECT_NAME} 
    test.cpp
)
install(TARGETS lib${PROJECT_NAME} DESTINATION ${INSTALL_DIR})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ DESTINATION ${INSTALL_INCLUDE_DIR} FILES_MATCHING PATTERN "*.h*")


# link lib and create executable
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(lib${PROJECT_NAME})

install(TARGETS ${PROJECT_NAME} DESTINATION ${INSTALL_DIR})

lib 构建部分有效,但似乎 lib 的链接不起作用。我正在使用在 test.cpp 中实现的简单添加方法,我得到了对此方法的 undefined reference 。

我在这里错过了什么?

最佳答案

target_link_libraries 调用的第一个参数必须是库应链接到的目标的名称,即在您的情况下为 ${PROJECT_NAME},第二个参数参数是库目标。请参阅 target_link_libraries 的文档.

在您的示例中,您需要使用:target_link_libraries(${PROJECT_NAME} lib${PROJECT_NAME})

关于c++ - CMake:构建库并将其链接到可执行文件导致 undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027072/

相关文章:

cmake - 如何在 cmake 2.8.12 中删除每个目标的定义

linux - arm-linux 下缺少 libopencv_ts 缺失

linux - 为什么静态链接的可执行文件中会有全局偏移表和过程链接表?

c++ - Apple Mach O 链接器

c++ - 计算给定 log(x) 和 log(y) 的 log(x - y),没有溢出?

c++ - 并行迭代宏的替代方案?

c++ - Visual Studio LNK2019 中的链接对象文件

不评估 CMake 生成器表达式

c++ - 如何解释 'duplicated symbols' 错误中的符号?

c++ - com 对象和接口(interface)