Cmake 为什么';你不能找到助推器吗?

Cmake 为什么';你不能找到助推器吗?,cmake,boost-unit-test-framework,Cmake,Boost Unit Test Framework,我尝试使用Boost单元测试框架来测试我的静态库,但CMake无法找到Boost,尽管在调用find\u package之前设置了Boost\u ROOT、CMake\u INCLUDE\u PATH、CMake\u library\u PATH。事实上,我根据类似问题的答案尝试了很多选择,但仍然没有成功 cmake版本:3.6.1 增强版:1.60.0 CMakeLists.txt: cmake_minimum_required(VERSION ${cmake_version}) pro

我尝试使用Boost单元测试框架来测试我的静态库,但CMake无法找到Boost,尽管在调用
find\u package
之前设置了
Boost\u ROOT、CMake\u INCLUDE\u PATH、CMake\u library\u PATH
。事实上,我根据类似问题的答案尝试了很多选择,但仍然没有成功

cmake版本:3.6.1

增强版:1.60.0

CMakeLists.txt:

cmake_minimum_required(VERSION ${cmake_version})

project(${LibName}_test)

set(Boost_DEBUG ON)
set(Boost_DETAILED_FAILURE_MSG ON)

set(BOOST_ROOT $ENV{BOOST_ROOT})
message(STATUS "BOOST_ROOT >> ${BOOST_ROOT}")

set(BOOST_LIBRARYDIR $ENV{BOOST_ROOT}/lib)
set(BOOST_INCLUDEDIR $ENV{BOOST_ROOT}/include)

enable_testing()

set(Boost_USE_STATIC_LIBS       OFF)
set(Boost_USE_MULTITHREADED     ON)

SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "$ENV{BOOST_ROOT}/include")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "$ENV{BOOST_ROOT}/lib")

find_package(Boost 1.60.0 EXACT REQUIRED COMPONENTS unit_test_framework)

#if(Boost_FOUND)
    include_directories("${LIB_HEADERS}")


    add_executable(test_executable
                                main.cpp
                                SomeClass_test.cpp
                                )

    target_include_directories(test_executable PRIVATE ${Boost_INCLUDE_DIRS})

    target_link_libraries(test_executable
                                        #${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}
                                        Boost::unit_test_framework
                                        ${LibName}
                                        )

    add_test(NAME test1 COMMAND test_executable)
#else()
#   message(STATUS "No Boost library were found!")
#endif()
main.cpp:

#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

#include <iostream>

// initialization function:
bool init_unit_test()
{
    return true;
}

// entry point:
int main(int argc, char * argv[]) {
    // insert code here...

    std::cout << "Boost version: "
    << BOOST_VERSION / 100000     << "."  // major version
    << BOOST_VERSION / 100 % 1000 << "."  // minor version
    << BOOST_VERSION % 100                // patch level
    << std::endl;

    return boost::unit_test::unit_test_main( &init_unit_test, argc, argv );
}
#定义BOOST\u TEST\u DYN\u链接
#包括
#包括
//初始化功能:
布尔初始单元测试()
{
返回true;
}
//入口点:
int main(int argc,char*argv[]){
//在这里插入代码。。。

std::你能编译你的boost吗?@NulledPointer是的,我编译了。
/bootstrap.sh--prefix=../installed/boost\uu${boost\u下划线\u VERSION}--使用libraries=test./b2--layout=taged-d0 link=shared threading=multi-install
它在\u install.sh文件之前,您可以临时设置
BOOST\u ROOT
BOOST\u LIBRARYDIR
BOOST\u INCLUDEDIR
work@NulledPointer完成了,但CMake仍然无法找到Boost。也许CMake无法读取Boost版本因为它说:导入的目标不适用于Boost版本?你的CMake版本是什么,你的Boost版本是什么?CMake必须比你的Boost更新,否则它无法识别。你编译了Boost吗?@NulledPointer是的。
/bootstrap.sh--prefix=../installed/Boost\uu${Boost\u下划线\u version}--使用libraries=test./b2--layout=taged-d0 link=shared threading=multi-install
它在\u install.sh文件之前,您可以临时设置
BOOST\u ROOT
BOOST\u LIBRARYDIR
BOOST\u INCLUDEDIR
work@NulledPointer完成了,但CMake仍然无法找到Boost。也许CMake无法读取Boost版本因为它说:导入的目标不适用于Boost版本?你的CMake版本是什么,你的Boost版本是什么?CMake必须比你的Boost更新,否则它无法识别。
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

#include "config.h"
#include "Rectangle.h"
#include "SomeClass_test.hpp"

BOOST_AUTO_TEST_CASE(int_test)
{
    int i = 2;
    BOOST_TEST(i);
    BOOST_TEST(i == 2);

}

BOOST_AUTO_TEST_CASE(area_test)
{
    Rectangle rect;
    rect.set_values(2, 3);
    BOOST_TEST(6 == rect.area());
}

BOOST_AUTO_TEST_CASE(config_test)
{
    auto major = SimpleNet::Version::Major;
    BOOST_TEST(0 == major);
}