我有一个 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/