我的项目有另一个问题。我设法让cmake编译它,但make不会运行。我收到错误消息,找不到一些标题,所以我根据这个问题答案检查了我的include_directories:Listing include_directories in CMake
我的include_directories列出了我想要的所有指定文件夹,但是makefile既没有包含“INC”标签,也没有cmake-gui显示include_directories属性。有没有人遇到类似或同样的问题可以帮助我?
编辑:
顶级cmake:
PROJECT(MyProject)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)
# set the compiler flags
SET(CMAKE_CXX_COMPILER g++)
SET(CMAKE_CXX_FLAGS "-fPIC -g -D DEBUG -Wall -Wfatal-errors -fstrict-aliasing")
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}
${GLEW_INCLUDE_DIR}
${GLUT_INCLUDE_DIR}
${GSL_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
${QT_INCLUDE_DIR}
${MyProject_SOURCE_DIR}/include)
之后我有了一些add_subdirectories。 CMake运行没有错误,但make似乎忽略了最后一个include_directories行。
答案 0 :(得分:1)
这是一份快速核对清单:
make
的目录中运行cmake
)。否则,您只需在环境中添加Make的路径,这样您就可以确定cmake可以看到它。打印目录路径以确保它们是正确的并检查它们是否有空格
MESSAGE("${Boost_INCLUDE_DIR}")
MESSAGE("${GLEW_INCLUDE_DIR}")
...
您实际应该将标头添加到可执行文件中(不需要,但如果您生成IDE项目文件,则会在其中看到标题)
#include <something.h>
或#include "something.h"
或#include <path/something.h>
(或更改包含CMake以错误方式设置的路径)认为CMake包的方式是我讨厌CMake的唯一方法。(我为每个外部库手动设置1个CMake项目,然后从我的项目中手动链接它而不是使用&#34 ;全局变量&#34;)。大多数情况下,它依赖于这些库的某种安装过程,但它可以通过许多方式进行更改或出错,而如果您下载外部库的特定版本,则自行构建并设置手动路径你确定如果出现问题是库维护者的错误而不是你的错误或某些缺少的安装信息(如果出现问题则意味着你不再使用正在运行的操作系统:D)