【问题标题】:cmake and eclipse: default include paths?cmake和eclipse:默认包含路径?
【发布时间】:2010-12-06 14:03:35
【问题描述】:

我有一个使用 CMake 系统构建的项目,我喜欢在 Eclipse 中导入它。 但是,当我使用 'cmake -G "Eclipse CDT4 - Unix Makefiles"' 生成 eclipse 项目文件时 Eclipse 项目中没有默认包含路径(例如 /usr/include' 或标准头文件的 gcc 路径)。

如何以最正确的方式解决这个问题?

系统: linux GCC 4.3.3 cmake 2.6.4 日食 3.5.1

【问题讨论】:

    标签: c++ eclipse cmake eclipse-cdt


    【解决方案1】:

    您必须转到项目属性(项目上方的右键)“C/C++ 包含路径和符号”并将它们添加为“外部包含路径”。

    【讨论】:

    • 更改应该在 CMakeList.txt 中完成,因为 Eclipse 项目文件是生成的
    • 我知道,但只有一次。当 CMakeList 文件更改时,请勿将此设置修改到 Eclipse 项目中。在eclipse项目中添加标准header只是为了让indexer找到,与构建过程无关。
    • fnieto 是对的,或者至少他所说的是我所知道的唯一解决方案。据我所知,没有更好的解决方案。
    【解决方案2】:

    在您的 CMakeLists.txt 中尝试添加以下两行:

    find_path(STDIO_INCLUDE_PATH stdio.h)
    include_directories("${STDIO_INCLUDE_PATH}/dummy/../")
    

    第一行查找stdio.h 的路径,它位于我系统上的/usr/include。第二个将此文件夹添加到 CMake 包含路径。添加/dummy/../ 部分是为了欺骗CMake 添加文件夹(否则不会),最终会被剥离。

    这适用于 CMake 2.8.8 和 Eclipse 3.7.2。

    【讨论】:

      【解决方案3】:

      试试

      cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_ECLIPSE_VERSION=<put here your eclipse version>  ../src
      

      我的情况是

      cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_ECLIPSE_VERSION=4.2  ../src
      

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        您可以直接从编译器解析目录列表,因此您知道您获得的集合与 CMake 使用的完全相同(假设您的 CMake 设置使用相同的编译器)。然后,使用separate_arguments 将它们拆分为一个列表,并使用include_directories 命令添加它们。

        execute_process(
            COMMAND echo
            COMMAND bash -c "g++ -E -Wp,-v - 2>&1"
            COMMAND awk "/^#include .* starts here:$/,/^End of search list/ { if ($0 ~ /^ /) { print } }"
          OUTPUT_VARIABLE SYS_INCLUDES_OUT)
        separate_arguments(SYS_INCLUDES UNIX_COMMAND ${SYS_INCLUDES_OUT}) # create a list
        include_directories(${SYS_INCLUDES}) # add list to includes
        

        然后它们将被包含在生成的 Eclipse 项目中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-22
          • 1970-01-01
          相关资源
          最近更新 更多