2012-01-29 70 views
2

我想强制CMake提供详细的包含路径(-I...)。考虑电流输出:输出包含路径和CMake

/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或任何输出包含路径?

+1

注意,使用MinGW的时候你也可以看看产生的输出:在某处集结目录\ YourProject \ CMakeFiles \ YourProject.dir将包含连接器和编译器标志的两个文件'link.txt'和'flags.txt' – 2012-01-30 12:08:35

回答

2

集(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 0)

2

当使用Unix的Makefile文件(它看起来像你),你可以通过键入获得全套的命令行标志,

make VERBOSE=1 

我想一些其他的发电机也有一个缓存变量,可以被设置。

+0

我已经尝试了'VERBOSE = 1'和'set(CMAKE_VERBOSE_MAKEFILE ON)',但是'@ CMakeFiles/go.dir/includes_CXX.rsp'继续出现而不是包含路径列表。 – 2012-01-30 14:25:55

+0

**注意:**使用MSYS Makefiles – 2012-01-30 14:31:22

+0

我没有使用MSYS Makefiles - 我会看看是否可以达到这个底部,因为我认为它会在那里工作。 – 2012-02-03 04:34:50

1

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

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