这是我的第一个c ++项目之一,我遇到了CMake的问题。
我有一个可执行的MyProject,我得到了一个带有升压单元测试的项目测试。 我尝试了以下方式,但我失败了。显然我不能以这种方式有两个可执行文件,我不知道如何修复它。
这是MyProject的CMake
project (MyProject)
find_package( Boost 1.48.0 COMPONENTS thread )
set(MYPROJECT_SRCS main.cpp foo.h foo.cpp)
add_executable(MyProject ${MYPROJECT_SRCS})
target_link_libraries(MyProject ${Boost_LIBRARIES})
这是测试的CMake
project (tests)
find_package( Boost 1.48.0 COMPONENTS thread unit_test_framework)
find_package( Boost 1.48.0 COMPONENTS thread )
include_directories("../MyProject")
set(TEST_SRCS test.cpp )
add_executable(tests ${TEST_SRCS})
target_link_libraries(tests ${Boost_LIBRARIES} MyProject)
add_test( example_test tests )
测试时的CMake错误/ CMakeLists.txt:13(target_link_libraries):
EXECUTABLE类型的目标“MyProject”可能没有链接到另一个 目标。一个人可能只链接到STATIC或SHARED库,或者 设置了ENABLE_EXPORTS属性的可执行文件。
我试图“ENABLE_EXPORTS属性设置”,但我认为我做错了。
答案 0 :(得分:3)
您不应该将可执行文件与测试链接,而是需要在测试源列表中包含主项目的源文件:
set(TEST_SRCS test.cpp ../MyProject/foo.cpp)
target_link_libraries(tests ${Boost_LIBRARIES} )
P.S。当您想要分析测试覆盖率时,它也会很有用。