Cmake 为什么';你不能找到助推器吗?
我尝试使用Boost单元测试框架来测试我的静态库,但CMake无法找到Boost,尽管在调用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
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);
}