使用Cmake运行Boost Test



我想知道我的配置有什么问题,阻止它运行Boost测试。

我有这个make文件:

cmake_minimum_required(VERSION 3.10)
project(Fubi)
set(BOOST_ROOT "C:/local/boost_1_73_0")
set(Boost_INCLUDE_DIRS "C:/local/boost_1_73_0")
set(Boost_LIBRARY_DIRS "C:/local/boost_1_73_0/lib64-msvc-14.2")
set(Boost_USE_STATIC_LIBS ON)
message(STATUS "BOOST_ROOT: ${BOOST_ROOT}")
message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
message(STATUS "Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}")
find_package(Boost REQUIRED)
find_package(Boost REQUIRED COMPONENTS unit_test_framework)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
set(SOURCES DbgHelpDll.cpp Fubi.cpp SysExports.cpp fubimain.cpp stdafx.cpp)
add_executable(Fubi ${SOURCES})
target_link_libraries(Fubi PRIVATE DbgHelp)
set_property(TARGET Fubi PROPERTY ENTRY_POINT "fubimain.cpp")
set(CMAKE_GENERATOR_PLATFORM x86)
set(CMAKE_SYSTEM_VERSION 6.0)
set(TEST_SOURCES TestSignatureParser.cpp)
#add_definitions(-DBOOST_TEST_DYN_LINK)
add_definitions(-DBOOST_TEST_STATIC_LINK)
add_executable(tests ${TEST_SOURCES})
target_link_libraries(tests ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
message(STATUS "Compiler version: ${CMAKE_CXX_COMPILER_VERSION}")

然后尝试用CLion构建项目:

====================[ Build | all | Debug ]=====================================
"C:Program FilesJetBrainsCLion 2019.2.5bincmakewinbincmake.exe" --build C:UserscyberquarksClionProjectsfubicmake-build-debug --target all --
[ 75%] Built target Fubi
Scanning dependencies of target tests
[ 87%] Building CXX object CMakeFiles/tests.dir/TestSignatureParser.cpp.obj
TestSignatureParser.cpp
[100%] Linking CXX executable tests.exe
LINK Pass 1: command "C:PROGRA~2MIB055~12019COMMUN~1VCToolsMSVC1429~1.301binHostx86x86link.exe /nologo @CMakeFilestests.dirobjects1.rsp /out:tests.exe /implib:tests.lib /pdb:C:UserscyberquarksClionProjectsfubicmake-build-debugtests.pdb /version:0.0 /machine:X86 /debug /INCREMENTAL /subsystem:console -LIBPATH:C:localboost_1_73_0stagelib C:localboost_1_73_0stageliblibboost_unit_test_framework-vc142-mt-gd-x32-1_73.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFilestests.dir/intermediate.manifest CMakeFilestests.dir/manifest.res" failed (exit code 1120) with the following output:
libboost_unit_test_framework-vc142-mt-gd-x32-1_73.lib(unit_test_main.obj) : error LNK2019: unresolved external symbol "class boost::unit_test::test_suite * __cdecl init_unit_test_suite(int,char * * const)" (?init_unit_test_suite@@YAPAVtest_suite@unit_test@boost@@HQAPAD@Z) referenced in function __catch$?unit_test_main@unit_test@boost@@YAHP6APAVtest_suite@12@HQAPAD@ZH0@Z$4
tests.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:Program FilesJetBrainsCLion 2019.2.5bincmakewinbincmake.exe"' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.29.30133binHostX86x86nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.29.30133binHostX86x86nmake.exe"' : return code '0x2'
Stop.

这里是CMake日志当项目被导入与CLion IDEA(也在重新加载期间):

"C:Program FilesJetBrainsCLion 2019.2.5bincmakewinbincmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - NMake Makefiles" C:UserscyberquarksClionProjectsfubi
-- BOOST_ROOT: C:/local/boost_1_73_0
-- Boost_INCLUDE_DIRS: C:/local/boost_1_73_0
-- Boost_LIBRARY_DIRS: C:/local/boost_1_73_0/lib64-msvc-14.2
-- Found Boost: C:/local/boost_1_73_0 (found version "1.73.0")  
CMake Warning at C:/Program Files/JetBrains/CLion 2019.2.5/bin/cmake/win/share/cmake-3.15/Modules/FindBoost.cmake:1144 (message):
New Boost version may have incorrect or missing dependencies and imported
targets
Call Stack (most recent call first):
C:/Program Files/JetBrains/CLion 2019.2.5/bin/cmake/win/share/cmake-3.15/Modules/FindBoost.cmake:1266 (_Boost_COMPONENT_DEPENDENCIES)
C:/Program Files/JetBrains/CLion 2019.2.5/bin/cmake/win/share/cmake-3.15/Modules/FindBoost.cmake:1904 (_Boost_MISSING_DEPENDENCIES)
CMakeLists.txt:21 (find_package)

-- Found Boost: C:/local/boost_1_73_0 (found version "1.73.0") found components:  unit_test_framework 
-- Compiler version: 19.29.30147.0
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/cyberquarks/ClionProjects/fubi/cmake-build-debug
[Finished]

下面是测试源:

/**
* @file TestSignatureParser.cpp
* @brief
*
* @author 
* @date 2022-12-20
*/
#define BOOST_TEST_NO_MAIN
#include <boost/test/unit_test.hpp>
//#include "SysExports.h"
// Create a test suite
BOOST_AUTO_TEST_SUITE(SignatureParserTestSuite)
// Define a test case for parsing a valid function signature
BOOST_AUTO_TEST_CASE(ParseValidSignature) {

}
// Define a test case for parsing an invalid function signature
BOOST_AUTO_TEST_CASE(ParseInvalidSignature) {
}
// End the test suite
BOOST_AUTO_TEST_SUITE_END()

您指定了BOOST_TEST_NO_MAIN,然后没有实现您自己的main,请使用BOOST_TEST_MODULE代替。

最新更新