CMake正在忽略包含目录

CMake正在忽略包含目录,cmake,Cmake,我的项目还有一个问题。我设法让cmake编译它,但make无法运行。我收到错误消息,没有找到某些标题,因此我根据以下问题答案检查了我的include_目录: 我的include_目录按我的需要列出了所有指定的文件夹,但makefile既不包含“INC”标记,也不显示“include_目录”属性。有没有人遇到过类似的问题?有没有人能帮我 编辑: 顶级cmake: PROJECT(MyProject) CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0) # set the

我的项目还有一个问题。我设法让cmake编译它,但make无法运行。我收到错误消息,没有找到某些标题,因此我根据以下问题答案检查了我的include_目录:

我的include_目录按我的需要列出了所有指定的文件夹,但makefile既不包含“INC”标记,也不显示“include_目录”属性。有没有人遇到过类似的问题?有没有人能帮我

编辑:

顶级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_子目录。CMake运行时没有错误,但make似乎忽略了最后一行include\u目录。

这里是一个快速检查表:

  • 确保目录路径没有空格,这可能不会直接影响CMake,但可能会给其他工具(GCC、mingw Make/Make)带来问题
  • 确保有正确的Make命令(尝试在调用
    cmake
    的目录中运行
    Make
    )。否则,您只需在环境中添加一个要创建的路径,以便确保cmake可以看到它
  • 打印目录路径以确保它们是正确的,并检查它们是否有空格

    消息(“${Boost\u INCLUDE\u DIR}”)

    消息(“${GLEW\u INCLUDE\u DIR}”)

  • 实际上,您应该向可执行文件添加头文件(不需要,但如果生成IDE项目文件,您将在那里看到头文件)

  • 对于使用的每个外部库,尝试编译一个简单的hello world,以检测该库是否正确安装(使用简单函数创建一个简单项目,以查看该库是否编译、链接和运行)
  • 确保包含目录路径正确
    \include
    \include“something.h”
    \include
    (或更改以错误方式设置的包含路径)
  • 你安装了那些外部库吗?(如果您只是在某个地方“解压”,CMake将无法找到它们)

CMake软件包的思维方式是我唯一讨厌CMake的地方。(我为每个外部库手动设置一个CMake项目,然后从我的项目手动链接它,而不是使用“全局变量”)。大多数情况下,它依赖于这些库的某种安装过程,但它可能会被更改或以许多您无法预测的方式出错,而如果您下载外部库的特定版本,自行构建并手动设置路径您可以确定,如果出现错误,是库维护人员的错误,而不是您的错误,或者是缺少的安装信息(如果出现错误,则意味着您不再使用工作的操作系统:D)

什么是“INC”标记?我在谷歌上搜索了在makefile中如何指定include目录-我假设这应该从cmake传播到makefile(因为它应该知道在哪里查找头文件和源文件)。你能提供一个CMakeLists.txt吗?也许它很简单,比如在添加库和添加可执行文件之前必须调用include_directories()。一个示例CMakeLists.txt文件将非常有用。您还可能会看到,包含路径中的某些头引用的头不在包含路径中。添加了一个示例。我真的希望这是一些noob问题首先,谢谢你的投入。我已经用cmake gui检查了我的include目录,message()为我提供了正确的路径。make表示未找到来自${MyProject\u SOURCE\u DIR}/include的include,尽管它位于include目录中。此时,您必须重现该问题以允许进一步调查尝试:
set(CMAKE\u include\u CURRENT\u DIR ON)