我在尝试构建一些代码时遇到了问题。 (我在 Linux 上)
为了简单起见:
这是我在 Position.h 文件中得到的内容(在真正开始时,我认为下一个没有必要解决该问题):
#include <Eigen/Dense>
这是我的 CMakeLists.txt:
project(p)
include_directories("./Eigen")
add_executable(
p
Eigen/Dense
Position.h # which requires Eigen/Dense
Position.cpp
#other files
)
项目目录中有两个目录:build和Eigen
要创建 Makefile,我进入构建目录,然后输入 cmake ..
。创建了 Makefile,但是当我尝试 make
时出现错误:
/path/to/Position.h:30:23: fatal error: Eigen/Dense: no such file or directory.
Position.h 来自 GitHub 上的代码(如果需要,我可以给你链接)。
请给我一个搜索方向,或者如果你看到什么问题,我的错误是什么
谢谢!
最佳答案
您不能在 add_executable()
中将 header 依赖项作为源文件给出。如果 Position.h
确实搜索 Eigen/Dense
,您可能只需要 include_directories(.)
。
project(p)
include_directories(.)
add_executable(
p
Position.cpp
Position.h
#other files
)
但是为什么不使用find_module()
呢?
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
引用
关于c++ - Eigen、make 和 cmake 之间的问题(可能是 cmake 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44115214/