2015-01-26 73 views
0

我試圖使用scons來構建一個跨平臺的cpp項目。某些文件包含ObjC代碼,該代碼僅包含在OSX中,並隱藏在其他平臺上的ifdef後衛之後。scons和ObjC++

在OSX,我需要通過

env.AppendUnique(FRAMEWORKS = Split('Cocoa CoreAudio AudioToolbox AudioUnit GLUT OpenGL')) 

在我SConstruct文件,包括一些-framework編譯器/連接選項,這是我做的,因爲它在文檔中說。

然而,FRAMEWORKS變量只能被用於.m.mm文件,而礦山都有.cpp擴展。我想保持這種方式,因爲它們只是OSX上的ObjC文件,而在其他平臺上只是cpp文件。

有沒有辦法讓scons將帶有.cpp擴展名的源文件作爲ObjC++對待,以使其使用FRAMEWORKS env var?

+0

您能否告訴我們您正在使用哪個工具,而試圖編譯「* .cpp」文件?這歸結爲這樣一個問題:「你如何設置你的構建環境?」。 – dirkbaechle 2015-01-28 21:16:48

+0

@dirkbaechle我想爲編譯器和鏈接器使用'clang ++'。所以我有'env.Replace(CXX ='clang ++')'和'env.Replace(LD ='clang ++')' – Ben 2015-02-05 00:18:15

+0

這不是我想要的。你如何初始化你的環境「env」,你是否在使用任何專門爲支持ObjC而設計的特殊工具(我的朋友谷歌告訴我有些東西......)? – dirkbaechle 2015-02-06 16:33:01

回答

1

我檢查了當前版本2.3.4的源代碼,並且在編譯源文件時不支持FRAMEWORKS變量,僅用於鏈接(applelink.py工具)。 因此,您必須定義您自己的ObjC Builder,然後使用已定義的變量(如$ _FRAMEWORKPATH,$ _FRAMEWORKS和$ FRAMEWORKSFLAGS)。 如果您需要更多的幫助,您可能會想到我們的用戶郵件列表[email protected]http://www.scons.org/lists.php),在那裏我們可以與您討論所有的細節。 ;)

+0

好的,非常感謝您的幫助。我將它添加到待辦事項列表:) – Ben 2015-02-10 03:17:16