【问题标题】:Fail to link UnitTest++ [duplicate]无法链接 UnitTest++ [重复]
【发布时间】:2026-02-18 23:40:01
【问题描述】:

我想在我的项目中使用UnitTest++,但编译时出现错误:

CMakeFiles/BNN.dir/main.cpp.o:-1: In function `main':
BNN/main.cpp:-1: error: undefined reference to `UnitTest::RunAllTests()'
:-1: error: collect2: error: ld returned 1 exit status

我在网上搜索了一个答案并尝试了一些我现在拥有的东西:

project(BNN)
cmake_minimum_required(VERSION 2.8)

file(GLOB SRC "*.cpp" "src/*.h" "src/*.cpp")
file(GLOB DATA_FILE "*.md")

find_package(UnitTest++ REQUIRED)
include_directories(${UnitTest++_INCLUDE_DIRS})
set(LIBS ${LIBS} ${UnitTest++_LIBRARY})

add_executable(${PROJECT_NAME} ${SRC} ${DATA_FILE})
target_link_libraries(${PROJECT_NAME} ${LIBS})

我按照官方指南构建库:

cd path/to/unittest-cpp/builds
cmake -G "<Choose a valid generator>" ../
cmake --build ./
sudo cmake --build ./ --target install

我的操作系统是 ArchLinux。

我需要做什么才能用 cmake 编译它?

【问题讨论】:

    标签: c++ unit-testing gcc cmake


    【解决方案1】:

    我已经通过将我的 cmake 文件更改为:

    project(BNN)
    cmake_minimum_required(VERSION 2.8)
    
    include_directories(src)
    
    file(GLOB SOURCES "*.cpp" "src/*.h" "src/*.cpp" "tests/*.cpp")
    file(GLOB DATA_FILE "*.md")
    
    add_executable(${PROJECT_NAME} ${SOURCES} ${DATA_FILE})
    target_link_libraries(${PROJECT_NAME} ${CMAKE_SOURCE_DIR}/../unittest-cpp/builds/libUnitTest++.a)
    

    【讨论】: