【问题标题】:Cmake : include directory - parent directoryCmake:包含目录-父目录
【发布时间】:2018-05-23 06:52:09
【问题描述】:
myproject/
  lib/
  src/
  project2/
    **CMakeLists.txt**
    test.cpp

我写了CMakeLists.txt 来编译'test.cpp' 文件。 我想include /src 因为我应该访问 src 的文件。

我怎样才能在上面包含 src 文件? 我试过set(MORE_INCLUDE_DIR "-I${CMAKE_SOURCE_DIR}../../ 但它不起作用。

我应该单独编译'test.cpp' 请有人帮助我。

提前致谢!

【问题讨论】:

  • MORE_INCLUDE_DIR 是什么?您应该致电include_directoriestarget_include_directories
  • 对抽象的 cmets 感到抱歉。 MORE_INCLUDE_DIR 用于设置 include_directories。我可以根据 CMAKE_SOURCE DIRECTORY 在父目录中设置 include_directories 吗?
  • 你可能指的是${CMAKE_SOURCE_DIR}/../,而不是${CMAKE_SOURCE_DIR}../../。顺便说一句,使用message() 命令你可以打印任何变量的值,并检查它的值。
  • @Tsyvarev 感谢您的评论:) 我已经修改了它,但它找不到路径。在这种情况下,我在其他部分错了吗?
  • 很难说你错在哪里,因为你既没有显示设置包含目录的代码 (CMakeLists.txt),也没有显示确切的错误消息。根据-I 选项的explicit 设置,您似乎误解了CMake 概念。但同样,没有代码我们只能猜测。

标签: c++ cmake compilation


【解决方案1】:

在这种情况下,cmake 需要绝对路径而不是相对路径。让我们尝试像这样调用 include_directories:

    get_filename_component(PARENT_DIR ../ ABSOLUTE)
    include_directories(${PARENT_DIR}/src)

它可以提供帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 2011-10-25
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多