8
我一直在使用cmake構建我的項目,這非常方便,因爲您可以避免使用不必要的文件污染源目錄。用scons構建源代碼?
假設的CMakeLists.txt是在當前目錄中,這可能如下進行:
mkdir build
cd build
cmake ..
make
我怎麼可以這樣做的scons的?
我一直在使用cmake構建我的項目,這非常方便,因爲您可以避免使用不必要的文件污染源目錄。用scons構建源代碼?
假設的CMakeLists.txt是在當前目錄中,這可能如下進行:
mkdir build
cd build
cmake ..
make
我怎麼可以這樣做的scons的?
在你SConstruct
文件,可以使用一個變種DIR:
SConscript("main.scons", variant_dir="build", duplicate=0)
然後在main.scons
您設置一切如常:
env = Environment()
env.Program(target='foo', source=Split('foo.c bar.c'))
這是可能做到這一點沒有硬編碼變異DIR成由(ab)使用存儲庫構造SConstruct,但該方法有其缺陷。根據記錄,你可以按如下方式建立在另一個目錄中運行上面:
mkdir mybuild
cd mybuild
scons -Y .. -f ../main.scons
最簡單,最可行的是隻使用variant_dir
。然後,您可以像平常一樣從頂級源目錄中運行該程序。所有構建文物都在build
子目錄中生成。
針對JesperE的評論,這裏是你如何編寫頂級SConstruct添加一個可選命名爲build目錄:
AddOption('--build', default='build')
SConscript("main.scons", variant_dir=GetOption('build'), duplicate=0)
然後您可以按如下從命令行調用該方法,以創建一個名爲「巴茲」一個build目錄:
$ scons --build=baz
但是你不能只通過'variant_dir'參數的值作爲命令行參數,以避免硬編碼? – JesperE 2010-01-02 08:05:52
你可以,但你必須記得每次將它傳遞給'scons'命令行。 – richq 2010-01-02 14:09:54