我不确定标题是否正确,但无论如何:
我正在用boost
和eigen3
库编写项目,我想进一步测试CMake。到目前为止,我已将所有内容写入一个.cpp文件中,标题如下:
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <iostream>
#include "eigen/Eigen/Dense"
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE Hello
#include <boost/test/unit_test.hpp>
#include <cmath>
#include <boost/timer/timer.hpp>
#include <fstream>
此外,我在我的&#34; main&#34;中添加了一些增强单元测试。以下列方式运作
BOOST_AUTO_TEST_CASE(universeInOrder)
{
Eigen::Matrix3d m;
m << 0, 1, 2,
3, 4, 5,
6, 7, 8;
BOOST_CHECK(Min(m) == 1);
}
其中Min
是返回最低coeff的单独函数。矩阵
在我的目录中,我有FindEigen3.CMake
和FindBoost.CMake
个文件。我还有CMakeLists.txt
文件,代码为:
cmake_minimum_required (VERSION 3.0)
project (hello)
find_package (Eigen3 3.3 REQUIRED NO_MODULE)
add_executable (hello hello.cpp)
target_link_libraries (hello Eigen3::Eigen)
enable_testing()
我正在跑步
mkdir build
cd build
cmake ..
并且没有错误,一切正常。
要运行我使用的程序
g++ -I /home/fdhd/Documents/boost/ file-name.cpp -lboost_unit_test_framework -lboost_timer -o file-name
这是我的问题 - 我可以避免在上面的命令中链接boost
并插入CMakeLists.txt
文件并运行
g++ file-name.cpp
,
所以它会起作用,因为一切都在CMakeLists
文件中?
有什么想法吗?我认为解决方案必须落后,但我无法真正看到它。
谢谢!
答案 0 :(得分:0)
要运行我使用的程序
Nop,这不是运行/测试程序的cmake惯用方法。由于您有 enable_testing(),因此cmake已经有一个自定义目标供您运行二进制文件。根据CTest wiki,您需要的是在CMakeLists.txt中添加 add_test 功能后输入make test。或多或少是这样的:
cmake_minimum_required (VERSION 3.0)
project (hello)
find_package (Eigen3 3.3 REQUIRED NO_MODULE)
add_executable (hello hello.cpp)
target_link_libraries (hello Eigen3::Eigen)
enable_testing()
add_test(test hello)