第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CakeKE_BUILD_TYPE未在CMakeLists.txt中使用

CakeKE_BUILD_TYPE未在CMakeLists.txt中使用

CakeKE_BUILD_TYPE未在CMakeLists.txt中使用我在將我的默認構建配置設置為Release時遇到問題,在我的CMakeLists.txt文件中,我在文件頂部設置了CMAKE_BUILD_TYPE#enable Release ALWAYS, configure varsset(CMAKE_BUILD_TYPE Release)set(EXECUTABLE_NAME "ParticleSimulator")set(VERSION_MAJOR 0)set(VERSION_MINOR 2)但是在構建我的項目并打開解決方案時,我總是會看到調試模式,這與我在CMakeLists文件中指定的相反。我究竟做錯了什么?我在那里看了一些其他的問題,但沒有看到任何特定于這個問題的東西。CMakeLists.txt的要點
查看完整描述

2 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

有兩種類型的發(fā)生器:單配置和多配置。

單一配置

類似Make的生成器:Unix Makefiles,NMake MakefilesMinGW Makefiles,......

您在生成步驟上設置配置類型:

cmake -H. -B_builds/Debug -DCMAKE_BUILD_TYPE=Debug "-GUnix Makefiles"

在這種情況下,構建步驟始終是Debug:

> cmake --build _builds/Debug    /usr/bin/c++ -g ...> cmake --build _builds/Debug --config Debug # `--config` ignored/usr/bin/c++ -g ...> cmake --build _builds/Debug --config Release # yep, ignored/usr/bin/c++ -g ...

多配置

IDE生成器:Visual Studio,Xcode

CMAKE_BUILD_TYPE on generate步驟被忽略,兩者:

> cmake -H. -B_builds -DCMAKE_BUILD_TYPE=Debug "-GVisual Studio 12 2013 Win64"

> cmake -H. -B_builds -DCMAKE_BUILD_TYPE=Release "-GVisual Studio 12 2013 Win64"

會產生同樣的效果:


這是因為所有配置都是內部的(即_builds/msvc-opaque/Release和/ _builds/msvc-opaque/Debug或其他,無關緊要)。您可以使用--config選項切換:

> cmake --build _builds --config Releasecl /O2 ...> cmake --build _builds --config Debugcl /Od ...

控制 (?)

是的你可以。只需定義CMAKE_CONFIGURATION_TYPES

# Somewhere in CMakeLists.txtmessage("Generated with config types: ${CMAKE_CONFIGURATION_TYPES}")

默認輸出:

-- Detecting CXX compiler ABI info - doneGenerated with config types: Debug;Release;MinSizeRel;RelWithDebInfo-- Configuring done

重寫它:

> cmake -H. -B_builds -DCMAKE_CONFIGURATION_TYPES="Debug;Release" "-GVisual Studio 12 2013 Win64"-- Detecting CXX compiler ABI info - doneGenerated with config types: Debug;Release-- Configuring done


您甚至可以定義自己的配置類型:

> cmake -H. -B_builds -DCMAKE_CONFIGURATION_TYPES="Debug;MyRelease" -DCMAKE_CXX_FLAGS_MYRELEASE="/My-Rel-flag" -DCMAKE_EXE_LINKER_FLAGS_MYRELEASE="/My-Linker-flags" "-GVisual Studio 12 2013 Win64"

并建立:

cmake --build _builds --config MyRelease

亂 (?)

如果你知道訣竅就一點都不:)這是如何在腳本/ CI服務器/文檔的構建指令等中構建/測試配置:

> CONFIG=Debug> cmake -H. -B_builds "-DCMAKE_BUILD_TYPE=${CONFIG}" # Set Debug to Makefile, ignored by IDE> cmake --build _builds --config "${CONFIG}" # Build Debug in IDE, ignored by Makefile> (cd _builds && ctest -VV -C "${CONFIG}") # Test Debug in IDE, ignored by Makefile

糟糕的模式

if(CMAKE_BUILD_TYPE STREQUAL Debug) # Burn it with fire!!!set(CMAKE_BUILD_TYPE MySuperRelease) # Be ready to catch a bug from IDE user...

好的

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} --my-debug-flags")

工作得很好。

target_compile_definitions(MyTarget PUBLIC "$<$<CONFIG:Debug>:MYDEBUG_MACRO>")

謝謝!:)你為一個程序員節(jié)省了一天。

使用Makefile為我工作,我很高興...

從一個漂亮的書中的一些報價好人,你可能知道(重點煤礦):

你為什么要打擾?在各種系統(tǒng)上編程或使用各種編譯器的人非常關心,因為如果他們不這樣做,他們就不得不浪費時間尋找和修復模糊的錯誤。聲稱他們不關心可移植性的人通常會這樣做,因為他們只使用一個系統(tǒng),并且覺得他們能夠承擔“我的編譯器實現(xiàn)的語言”的態(tài)度。這是一個狹隘短視的視圖。如果您的程序成功,則可能會被移植,因此有人必須找到并修復與實現(xiàn)相關的功能相關的問題。此外,程序通常需要與同一系統(tǒng)的其他編譯器一起編譯,甚至您喜歡的編譯器的未來版本可能會做一些與當前版本不同的東西。在編寫程序時,了解并限制實現(xiàn)依賴性的影響要比在之后嘗試解決混亂更容易。


查看完整回答
反對 回復 2019-08-26
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

發(fā)生的一種可能性是其中一個子模塊已將CMAKE_BUILD_TYPE值設置在緩存中,IE:

SET(CMAKE_BUILD_TYPE Debug CACHE)

意味著該值將從該點永久更新到配置運行結束。跟蹤此值發(fā)生變化的違規(guī)位置的一個好方法是使用cmake的variable_watch。在主CMakelists.txt文件中添加以下行

variable_watch(CMAKE_BUILD_TYPE)

每次訪問此變量時,這將打印到標準錯誤。要將其記錄到日志文件中,請執(zhí)行以下操作:

cmake <your options> 2>variable_watch.log

你可能會看到類似的東西:

CMake調試日志在<...> / CMakeLists.txt:184(add_library):使用值為“Debug”的READ_ACCESS訪問變量“CMAKE_BUILD_TYPE”。

然后,您可能會看到首次更改CMAKE_BUILD_TYPE的點。從這里你將更接近追蹤違規(guī)的cmake線。


查看完整回答
反對 回復 2019-08-26
  • 2 回答
  • 0 關注
  • 1386 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號