代码之家  ›  专栏  ›  技术社区  ›  JRM

在CMake中使用-isystem而不是-I

  •  44
  • JRM  · 技术社区  · 16 年前

    看到了吗 http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html#Directory-Options 有关-I和-I系统的详细信息。

    3 回复  |  直到 16 年前
        1
  •  69
  •   RobertJMaynard    12 年前

    是,通过使用可选的系统标志强制路径成为系统包含

    include_directories(SYSTEM path)
    

    http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:include_directories

    从CMake 2.8.12开始,您可以使用新的target\u include\u目录在目标级别包含system directory include,同时利用CMake的新使用要求功能:

    target_include_directories(foo SYSTEM PUBLIC path)
    

    现在targetfoo将使用path作为系统include,以及任何链接到

    http://cmake.org/cmake/help/v2.8.12/cmake.html#command:target_include_directories

        2
  •  11
  •   Kara Praveen Prasad    6 年前

    include_directories(SYSTEM path1 path2)
    

    然而,对于CuGe2.84和Makefiles,这只用于C++而不是C,我查看了它,GNU.CGUILE没有初始化: CMAKE_INCLUDE_SYSTEM_FLAG_C

    所以你打电话后可以自己设置 project()

    if(CMAKE_COMPILER_IS_GNUCC)
      set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
    endif()
    

    更新:

    CMake开发人员在2.8.5中修复了这个问题

        3
  •  -7
  •   the_void    16 年前

    CMAKE_C_FLAGS CMAKE_CXX_FLAGS 添加其他标志。