2013-03-28 30 views
2

我正在使用scons編譯vc10和瑞薩編譯器。如何使用scons在調試模式下獲得可執行文件

是否有任何命令在調試模式下獲得可執行文件?

如果我使用命令「scons」執行我的項目並輸入「它將釋放模式。

我無法使用Visual Studio調試器調試該.exe文件。

誰能告訴我如何在調試模式下獲得調試可執行文件? 是否有任何命令或標誌在scons中設置?

回答

5

爲了得到在調試模式下的可執行文件,它只是增加相應的編譯器調試標誌在CXXFLAGS結構變量的一個簡單的事情,如下:

env = Environment() 
env.Append(CXXFLAGS = ['/DEBUG']) 

但是,這是相當基本的,而且我想你希望能夠通過命令行來控制何時以調試模式編譯可執行文件。這可以用命令行的目標或命令行選項來完成(如debug = 1)

要使用的目標,你可以做這樣的事情:

envRelease = Environment() 
envDebug = Environment() 
envDebug.Append(CXXFLAGS = ['/DEBUG']) 

targetRelease = envRelease.Program(target = 'helloWorld', source = 'helloWorld.cc') 
# This makes the release target the default 
envRelease.Default(targetRelease) 

targetDebug = envDebug.Program(target = 'helloWorldDebug', source = 'helloWorld.cc') 
envDebug.Alias('debug', targetDebug) 

如果不帶命令行的目標執行SCons的,那麼將會按照envRelease.Default()函數的指定構建發行版本。如果您使用調試目標執行SCons,如下所示:scons debug然後調試版本將按照envDebug.Alias()函數的指定進行構建。

另一種方式做,這是命令行參數,就像這樣:scons debug=0scons debug=1,這將讓你在你的構建腳本執行一些邏輯,從而使你更容易控制的變體,DIR等,如下所示:

env = Environment() 

# You can use the ARGUMENTS SCons map 
debug = ARGUMENTS.get('debug', 0) 
if int(debug): 
    env.Append(CXXFLAGS = ['/DEBUG']) 
    env.VariantDir(...) 
else: 
    env.VariantDir(...) 

env.Program(target = 'helloWorld', source = 'helloWorld.cc') 

查看here瞭解更多命令行處理選項。

最後一個選擇是我總是建立兩個版本,每個版本都在各自的variantDir(build/vc10/release和build/vc10/debug)中。

envRelease = Environment() 
envDebug = Environment() 
envDebug.Append(CXXFLAGS = ['/DEBUG']) 

envRelease.VariantDir(...) 
targetRelease = envRelease.Program(target = 'helloWorld', source = 'helloWorld.cc') 
# This makes the release target the default 
envRelease.Default(targetRelease) 
# This allows you to only build the release version: scons release 
envRelease.Alias('release') 

envDebug.VariantDir(...) 
targetDebug = envDebug.Program(target = 'helloWorld', source = 'helloWorld.cc') 
# This makes the debug target get built by default in addition to the release target 
envDebug.Default(targetDebug) 
# This allows you to only build the debug version: scons debug 
envDebug.Alias('debug') 
+0

我認爲您需要在上述的variantdir版本中將調試變量添加/ DEBUG標誌? – bdbaddog

+0

似乎沒有爲我工作,我附加'/ DEBUG'到調試環境,它仍然表示它不能加載任何調試符號。 –

相關問題