2012-01-29 82 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對命令行的長度有限制,在複雜的編譯調用中可以輕鬆超出該長度。因此,它是更安全使用文件傳遞參數