2014-11-23 72 views
3

this答案中,它表示Debug是默認的cmake構建配置。什麼是cmake的默認構建配置

但我有不同的看法:

我在我的CMakeLists.txt以下選擇調試和發佈根據當前構建配置一個lib的版本。

target_link_libraries(MyApp debug Widgets_d) 
target_link_libraries(MyApp optimized Widgets) 

看來,當我調用cmake的不sepcifying -DCMAKE_BUILD_TYPE標誌,小工具是用來代替Widgets_d(當我刪除窗口小部件,並嘗試建立,使抱怨lib中是不存在的)。這意味着默認情況下,構建配置是優化的,而不是調試。

那麼實際上默認的構建配置是什麼?如果是調試,我的CMakelists.txt會出現什麼問題?

+0

http://stackoverflow.com/questions/24460486/cmake-build-type-not-being-used-in-cmakelists-txt – 2014-11-24 18:10:51

回答

4

target_link_librariesoptimized關鍵字對應於所有不調試的配置。

嘗試將message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")添加到您的CMakeLists.txt中,以查看實際的構建類型(我認爲它應該爲空)。

+0

因此,如果我在構建時未指定CMAKE_BUILD_TYPE,構建將是一個優化構建並沒有調試信息將被添加到二進制文件? – 2014-11-23 09:03:07

+1

您自己的代碼的調試信息和優化將取決於爲默認構建類型設置的編譯器標誌。至於Widgets庫,是的,MyApp將與Widgets鏈接(不是Widgets_d)。如果您使用CMake生成Makefiles(CMake也支持其他輸出格式),則可以使用「make VERBOSE = 1」來查看確切的編譯器標誌。 – 2014-11-23 09:36:10