1
在我的特別CMake的項目源文件,我有三個CPP文件:包括在每個配置中的基礎CMake的
a.cpp
b.cpp
c.cpp
我想「a.cpp」在所有配置中被編譯(釋放&調試)。
我只想'b.cpp'在DEBUG配置中編譯。
我只想'c.cpp'在RELEASE配置中編譯。
我該怎麼做?我需要一些類似於 CMake操作所接受的debug
和optimized
關鍵字。
在我的特別CMake的項目源文件,我有三個CPP文件:包括在每個配置中的基礎CMake的
a.cpp
b.cpp
c.cpp
我想「a.cpp」在所有配置中被編譯(釋放&調試)。
我只想'b.cpp'在DEBUG配置中編譯。
我只想'c.cpp'在RELEASE配置中編譯。
我該怎麼做?我需要一些類似於 CMake操作所接受的debug
和optimized
關鍵字。
據我所知cmake沒有提供基於配置排除某些文件的方法。所以你需要一個解決方法來實現這種行爲。
例如,你可以用的b.cpp
的全部內容,並c.cpp
一些後衛宏:
#ifdef BUILD_ME
//original content of your file
#endif
和下一組特定的配置編譯器定義在cmake的:
if (${CMAKE_GENERATOR} MATCHES "Make" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
# This block might be needed because CMAKE_BUILD_TYPE is usually
# undefined for makefiles.
# And COMPILE_DEFINITIONS_RELEASE are not chosen by default.
set(CMAKE_BUILD_TYPE RELEASE)
endif()
set_source_files_properties(b.cpp PROPERTIES COMPILE_DEFINITIONS_DEBUG BUILD_ME)
set_source_files_properties(c.cpp PROPERTIES COMPILE_DEFINITIONS_RELEASE BUILD_ME)
add_executable(target_name a.cpp b.cpp c.cpp)