CMake:生成库并将其链接到可执行文件中,导致未定义的参考错误

时间:2019-07-14 11:37:44

标签: 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的链接无效。我正在使用一个简单的add方法,该方法在test.cpp中实现,但未获得对该方法的未定义引用。

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

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

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