简体   繁体   English

使用 Cmake 运行升压测试

[英]Running Boost Test with Cmake

I'm wondering what is wrong with my configuration that prevents it from running the Boost test.我想知道我的配置有什么问题导致它无法运行 Boost 测试。

I have this make file:我有这个制作文件:

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}")

Then trying to build the project with CLion:然后尝试使用 CLion 构建项目:

====================[ Build | all | Debug ]=====================================
"C:\Program Files\JetBrains\CLion 2019.2.5\bin\cmake\win\bin\cmake.exe" --build C:\Users\cyberquarks\ClionProjects\fubi\cmake-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~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\tests.dir\objects1.rsp /out:tests.exe /implib:tests.lib /pdb:C:\Users\cyberquarks\ClionProjects\fubi\cmake-build-debug\tests.pdb /version:0.0 /machine:X86 /debug /INCREMENTAL /subsystem:console -LIBPATH:C:\local\boost_1_73_0\stage\lib C:\local\boost_1_73_0\stage\lib\libboost_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:CMakeFiles\tests.dir/intermediate.manifest CMakeFiles\tests.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 Files\JetBrains\CLion 2019.2.5\bin\cmake\win\bin\cmake.exe"' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX86\x86\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX86\x86\nmake.exe"' : return code '0x2'
Stop.

And here's the CMake log when the project was imported with the CLion IDEA (also during reloading):这是使用 CLion IDEA 导入项目时(也在重新加载期间)的 CMake 日志:

"C:\Program Files\JetBrains\CLion 2019.2.5\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - NMake Makefiles" C:\Users\cyberquarks\ClionProjects\fubi
-- 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]

Here's the test source:这是测试源:

/**
 * @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()

You've specified BOOST_TEST_NO_MAIN and then not implemented your own main , use BOOST_TEST_MODULE instead.您已经指定了 BOOST_TEST_NO_MAIN然后没有实现自己的main ,而是使用BOOST_TEST_MODULE

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM