【问题标题】:add header files in parent directory在父目录中添加头文件
【发布时间】:2017-05-03 10:44:09
【问题描述】:

我正在尝试包含一个包含在其父目录中的 .h 文件。看起来像这样:

.
├── fan_controller
├── ip_camera
├── motors
├── pose_and_distance
└── serial_communication

编辑:它们是不同的“子项目”,每个都包含一个独立的 CMakeList,我在子项目 Fan_controller 中工作,其中包含它的 main 和它的 CmakeList,我想使用 motors 目录中的文件。

他们有不同的文件,我在 fan_controller 的 main 中工作,我试图通过这样做来包含一个位于电机内部的文件:

#include "../motors/src/resources/classes/Arduino.h"

如果我把全局路径它工作正常:

#include "/home/kailegh/catkin_ws/src/project/motors/src/resources/classes/Arduino.h"

问题是文件在那里,我检查了几次,QT 自动完成路径,所以它找到了它。但是,当我尝试编译时,它会说:

no such file or directory

我不知道为什么会这样,我应该在 CmakeList 中添加一些东西吗?问题是文件在那里!! 提前非常感谢!

【问题讨论】:

    标签: c++ compilation cmake include include-path


    【解决方案1】:

    假设您在根文件夹(带有 fan_controller、ip_camera 的文件夹)中有 CMakeLists.txt,请添加以下 include_directory 语句:

    cmake_minimum_required(VERSION 2.8.12)
    ...
    include_directory(fan_controller/src/resources/classes)
    # if required: include_directory(ip_camera/src/resources/classes)
    if required: include_directory(motors/src/resources/classes)
    
    set(SOURCES fan_controller/src/resources/classes
        fan_controller/src/resources/classes/myfancontroller.cpp
    )
    
    add_executable(myfan_controller)
    

    假设你有独立的项目,你可以使用:

    PS:QtCreator 使用 CMakeLists.txt 结果查看文件系统。

    【讨论】:

    • 对不起,我会编辑我的问题,每个都是不同的子项目,每个都包含独立的 CMakeLists 没有根 CMakeList
    • 嗯,非常感谢,我想我可以使用“..”添加它们;似乎只适用于头文件,当我尝试使用父级的相对路径时,它不起作用。非常感谢,我会尝试安装它们 PS我应该接受你的回答吗?也许有人想出一些东西让它在不安装的情况下工作
    • 不安装的解决方案是ExternalProject宏。
    猜你喜欢
    • 2014-08-23
    • 2016-12-11
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2015-09-02
    • 2015-02-23
    相关资源
    最近更新 更多