2015-11-05 34 views
3

我想在我的CMake項目中禁用單個* .cpp文件的優化。我發現CMake提供了以下內容來實現這一點:CMake:如何禁用單個* .cpp文件的優化?

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -O0) 

但是,這似乎不適用於我。我生成了一個Visual Studio 2013項目,每當我更改爲'Release'或'RelWithDebInfo'時,它仍然會完全優化該文件,正如可以在屬性下看到的那樣。

不要緊,在上面的命令放置?我有多個cmake文件分佈在整個項目中。我將上述命令直接放在* .cpp文件添加到項目的cmake文件中。

或者有沒有其他的辦法告訴CMake的,這個文件應該沒有得到根本優化?

+1

它應該工作。該命令應放置在調用add_executable()'/'add_library()'的同一個cmake文件中。另請參閱[set_source_files_properties]的文檔(https://cmake.org/cmake/help/v3.0/command/set_source_files_properties.html) – Tsyvarev

+0

這會將-O0附加到編譯選項,但如果編譯版本不會你會在命令行中同時得到-O0和-O3? –

回答

1

感謝Tsyvarev!

事實上,我曾在其中根據add_library()包含在以使其工作cmake的文件放置命令。

但是另外還有一個我必須應用的小改動:Visual Studio需要-O d(而不是-O0)來禁用優化。

所以對於Visual Studio中的最後一個命令建立這個樣子的:

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -Od) 

,這放在cmake的文件,其中的add_library()調用對於* .cpp文件。