2017-05-07 31 views
0

我剛剛下載了cxxtest的4.4版本,並將我的zip文件解壓縮到此路徑中:C:/cxxtest-4.4。 現在後,沒有做任何額外的步驟,我打開克利翁,並試圖CxxTest添加到我的項目,因爲它如下:在CMake中鏈接CxxTest,它表示成功但未能生成

set(CXXTEST_PYTHON_TESTGEN_EXECUTABLE C:/cxxtest-4.4/python/cxxtest/cxxtestgen.py) 
find_package(CxxTest REQUIRED) 

if(CXXTEST_FOUND) 
    set(SOURCE_FILES main.cpp Calculator.h TestCalculator.h Calculator.cpp  TestCalculator.h) 
    add_executable(Calculator ${SOURCE_FILES}) 
endif() 

我不得不手動設置兩個變量會導致如果我不這麼做,我得到以下錯誤:

"C:\Program Files (x86)\JetBrains\CLion 2017.1\bin\cmake\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles"  C:\Users\Admin\CLionProjects\Calculator 
CMake Error at C:/Program Files (x86)/JetBrains/CLion 2017.1/bin/cmake/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:138 (message): 
    Could NOT find CxxTest (missing: CXXTEST_PYTHON_TESTGEN_EXECUTABLE) 
Call Stack (most recent call first): 
    C:/Program Files (x86)/JetBrains/CLion 2017.1/bin/cmake/share/cmake- 3.7/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) 
    C:/Program Files (x86)/JetBrains/CLion 2017.1/bin/cmake/share/cmake- 3.7/Modules/FindCxxTest.cmake:221 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) 
    CMakeLists.txt:9 (find_package) 


-- Configuring incomplete, errors occurred! 
See also "C:/Users/Admin/CLionProjects/Calculator/cmake-build- debug/CMakeFiles/CMakeOutput.log". 

現在一切似乎正常工作,這是我的CMake的調試:

"C:\Program Files (x86)\JetBrains\CLion 2017.1\bin\cmake\bin\cmake.exe" - DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles"  C:\Users\Admin\CLionProjects\Calculator 
-- Configuring done 
-- Generating done 
-- Build files have been written to:  C:/Users/Admin/CLionProjects/Calculator/cmake-build-debug 

現在,當我嘗試使用cxxtest/TestSuite.h在一個頭文件裏面,它說它找不到它。這讓我瘋狂,請幫助我!

在此先感謝!

編輯:我設法連接它,現在我能找到的頭文件,添加到CMake的文件中這一行:當我建立我得到以下輸出

include_directories(C:/cxxtest-4.4) 

現在:

"C:\Program Files (x86)\JetBrains\CLion 2017.1\bin\cmake\bin\cmake.exe" -- build C:\Users\Admin\CLionProjects\Calculator\cmake-build-debug --target  Calculator -- -j 8 
[ 33%] Linking CXX executable Calculator.exe 
CMakeFiles\Calculator.dir/objects.a(main.cpp.obj): In function ` ZN7CxxTest7trackerEv': 
C:/cxxtest-4.4/cxxtest/TestTracker.h:130: undefined reference to  `CxxTest::TestTracker::tracker()' 
CMakeFiles\Calculator.dir/objects.a(main.cpp.obj): In function  `ZN7CxxTest14numberToStringIlEEPcT_S1_S2_jj': 
C:/cxxtest-4.4/cxxtest/ValueTraits.h:183: undefined reference to  `CxxTest::digitToChar(unsigned int)' 
CMakeFiles\Calculator.dir/objects.a(main.cpp.obj): In function `ZN7CxxTest14doAssertEqualsIiiEEvPKciS2_T_S2_T0_S2_': 
C:/cxxtest-4.4/cxxtest/TestSuite.h:146: undefined reference to `CxxTest::doAbortTest()' 
CMakeFiles\Calculator.dir/objects.a(main.cpp.obj):main.cpp:(.rdata$_ZTV14TestCalculator[__ZTV14TestCalculator]+0x14): undefined reference  to `CxxTest::TestSuite::tearDown()' 
CMakeFiles\Calculator.dir/objects.a(main.cpp.obj): In function `ZN14TestCalculatorD1Ev': 
C:/Users/Admin/CLionProjects/Calculator/TestCalculator.h:8: undefined  reference to `CxxTest::TestSuite::~TestSuite()' 
collect2.exe: error: ld returned 1 exit status 
CMakeFiles\Calculator.dir\build.make:123: recipe for target 'Calculator.exe' failed 
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/Calculator.dir/all' failed 
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/Calculator.dir/rule' failed 
mingw32-make.exe[3]: *** [Calculator.exe] Error 1 
Makefile:117: recipe for target 'Calculator' failed 
mingw32-make.exe[2]: *** [CMakeFiles/Calculator.dir/all] Error 2 
mingw32-make.exe[1]: *** [CMakeFiles/Calculator.dir/rule] Error 2 
mingw32-make.exe: *** [Calculator] Error 2 

回答

1

不確定這是否是一個問題,請參閱CxxTest的CMake文檔CMake文檔。

從您的示例CMakeLists文件看來,您做了正常項目文件的剪切和過去。您不能包含main.cpp文件CxxTest會根據您的測試定義文件生成一個名爲runner.cpp的文件。

所以在CMakeFiles.txt您CxxTest節應該是這個樣子:

set(CMAKE_PREFIX_PATH ${CMAKE_SOURCE_DIR}/deps/cxxtest/bin) 
find_package(CxxTest REQUIRED) 
if(CXXTEST_FOUND) 
    include_directories(${CXXTEST_INCLUDE_DIR}) 
    enable_testing() 
    CXXTEST_ADD_TEST(tests 
     runner.cpp # THIS IS GENERATED BUT YOU NEED TO ADD IT HERE 
     c:/libraries/boost_1_63_0/boost/filesystem.hpp # THIS SHOULD NOT BE HARD CODED 
     ${CMAKE_SOURCE_DIR}/source/string_tokenizer.cpp # YOUR PROJECT FILES THAT WILL BE USED FOR YOUR TEST 
     ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_stringtokenizer.h # YOUR TEST DESCRIPTION FILE 
) 
    target_link_libraries(tests ${Boost_LIBRARIES}) # LINK BOOST/OTHER THIRD PARTY LIBS TO YOUR TEST 
endif() 

希望這有助於。