c++ - 确保重新编译时处理定义

标签 c++ eigen precompile

我正在使用 Eigen 开发一个 C++ 项目。 最近我使用此处描述的推荐方式向 Eigen MatrixBase 添加了一个函数:

https://eigen.tuxfamily.org/dox/TopicCustomizingEigen.html

此网页解释了如何在名为 MatrixBaseAddons.h 的新文件中添加新的特征函数。然后它要求定义 EIGEN_MATRIXBASE_PLUGIN

Then one can add the following declaration in the config.h or whatever prerequisites header file of his project:

#define EIGEN_MATRIXBASE_PLUGIN "MatrixBaseAddons.h"

这是困扰我的部分......我没有创建我正在处理的项目并且是 CMake 的新手。我在我们的项目中没有看到 config.h 文件,也不知道在哪里添加上面的定义以确保始终定义 EIGEN_MATRIXBASE_PLUGIN。

在使用 CMake 的 c++ 项目中,我们如何查看/更改文件的编译顺序?我应该把这条线放在哪里

#define EIGEN_MATRIXBASE_PLUGIN "MatrixBaseAddons.h"

确保它始终被定义?

最佳答案

尝试在您的 CMakeLists 中添加以下行:

add_definitions(-DEIGEN_MATRIXBASE_PLUGIN="MatrixBaseAddons.h")

这会将您的定义添加到您的编译器命令行。更多信息在 CMake add_definitions page

关于c++ - 确保重新编译时处理定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594365/

相关文章:

c++ - std::string 的奇怪行为

c++ - 错误的输出代码

C++ 开关 () 错误

c++ - 并行使用 Eigen BICGSTAB 求解稀疏矩阵

c++ - 将 C++ 特征矩阵传递给 Matlab mex 输出

c++ - 将 OpenGL 与 Eigen 一起用于存储顶点数据和 glVertexAttribPointer

c++ - 删除控制台/cmd 提示符上闪烁的下划线

ruby-on-rails - config.assets.precompile 不添加供应商/gem Assets

c - 从 .h 头文件中删除预编译指令

c++ - 预编译器会评估位移位和算术运算吗?