CMake忽略了包含目录

时间:2015-05-19 13:07:12

标签: cmake

我的项目有另一个问题。我设法让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行。

1 个答案:

答案 0 :(得分:1)

这是一份快速核对清单:

  • 确保目录路径没有空格,可能不会直接影响CMake,但可能会导致其他工具出现问题(GCC,mingw-make / make)
  • 确保您具有正确的Make命令(尝试在您调用make的目录中运行cmake)。否则,您只需在环境中添加Make的路径,这样您就可以确定cmake可以看到它。
  • 打印目录路径以确保它们是正确的并检查它们是否有空格

    MESSAGE("${Boost_INCLUDE_DIR}")

    MESSAGE("${GLEW_INCLUDE_DIR}")

    ...

  • 您实际应该将标头添加到可执行文件中(不需要,但如果您生成IDE项目文件,则会在其中看到标题)

  • 对于每个使用的外部库,尝试编译一个简单的hello world来检测是否正确安装了该库(使用简单函数创建一个简单的项目,看看是否编译,链接和运行)
  • 确保包含目录路径正确#include <something.h>#include "something.h"#include <path/something.h>(或更改包含CMake以错误方式设置的路径)
  • 你安装了那些外部图书馆,不是吗? (如果你只是&#34;解压缩&#34;他们某处,CMake无法找到它们)

认为CMake包的方式是我讨厌CMake的唯一方法。(我为每个外部库手动设置1个CMake项目,然后从我的项目中手动链接它而不是使用&#34 ;全局变量&#34;)。大多数情况下,它依赖于这些库的某种安装过程,但它可以通过许多方式进行更改或出错,而如果您下载外部库的特定版本,则自行构建并设置手动路径你确定如果出现问题是库维护者的错误而不是你的错误或某些缺少的安装信息(如果出现问题则意味着你不再使用正在运行的操作系统:D)