我有一个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中实现,但未获得对该方法的未定义引用。
我在这里想念什么?
答案 0 :(得分:1)
调用target_link_libraries
的第一个参数必须是应该链接到库的目标的名称,即${PROJECT_NAME}
,第二个参数是库的目标。请参阅target_link_libraries的文档。
在您的示例中,您需要使用:target_link_libraries(${PROJECT_NAME} lib${PROJECT_NAME})