【问题标题】:Output Include Paths and CMake输出包括路径和 CMake
【发布时间】:2012-02-21 19:29:54
【问题描述】:

我想强制 CMake 在包含路径方面提供详细信息 (-I...)。考虑当前输出:

/D/Software/MinGW/bin/g++.exe -DQT_DEBUG -fmessage-length=0 -mfpmath=sse -msse2 -fopenmp -g3 -gdwarf-2 @CMakeFiles/go.dir/includes_CXX.rsp   -o CMakeFiles/go.dir/main.cpp.obj -c /D/Users/Haroogan/Development/Workspace/New2/main.cpp

到处都是,而不是显示包含路径的列表,而是显示@CMakeFiles/go.dir/includes_CXX.rsp。事实上,这个文件包含包含路径。

如何强制 CMake 或 Make 或其他输出包含路径?

【问题讨论】:

  • 请注意,使用 MinGW 时,您还可以查看生成的输出: build-dir\YourProject\CMakeFiles\YourProject.dir 中的某处将是两个文件 'link.txt' 和 'flags.txt'包含链接器和编译器标志

标签: path include makefile cmake


【解决方案1】:

设置(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 0)

【讨论】:

    【解决方案2】:

    当使用 Unix Makefiles(它看起来像你)时,您可以通过键入获得完整的命令行标志集,

     make VERBOSE=1
    

    我认为其他一些生成器也有可以设置的缓存变量。

    【讨论】:

    • 我已经尝试了VERBOSE=1set(CMAKE_VERBOSE_MAKEFILE ON),但@CMakeFiles/go.dir/includes_CXX.rsp 继续出现而不是包含路径列表。
    • 注意: 使用 MSYS Makefiles
    • 我还没有使用 MSYS Makefiles - 我会看看我是否可以深入了解它,因为我认为它会在那里工作。
    【解决方案3】:

    参数@CMakeFiles/go.dir/includes_CXX.rsp 实际上是传递给编译器的,然后编译器读取该文件并将其解释为选项列表。有关此机制的说明,请参见 man gcc。

    使用该机制是因为 MS Windows 上的 shell 对命令行的长度有限制,在复杂的编译调用中很容易超过该长度。因此使用文件传递参数更安全

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 2012-10-17
      相关资源
      最近更新 更多