【发布时间】:2017-11-08 19:36:20
【问题描述】:
我不确定标题是否正确,但无论如何:
我正在使用 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>
我还通过以下方式在“主”函数中添加了一些增强单元测试
BOOST_AUTO_TEST_CASE(universeInOrder)
{
Eigen::Matrix3d m;
m << 0, 1, 2,
3, 4, 5,
6, 7, 8;
BOOST_CHECK(Min(m) == 1);
}
其中Min 是一个返回最低系数的单独函数。的矩阵。
在我的目录中,我同时拥有 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文件中?
有什么想法吗?我认为解决方案一定是在拐角处,但我看不到。
谢谢!
【问题讨论】:
-
“要运行我使用的程序...”等等,CMake 不是已经为你做了吗??
-
说实话我不确定,如果是的话我以后如何“运行”程序?
-
这可能被认为是愚蠢的,但我有点迷茫
-
您发布的命令行,不运行程序,而是调用编译器编译
file-name.cpp并将其链接为可执行目标。要调用可执行文件,只需在创建它的目录中键入./file-name。 -
您没有正确使用 cmake - cmake 生成(以及其他)makefile,这意味着您键入
make,而不是g++ ...来构建程序
标签: c++ unit-testing cmake