2013-08-01 32 views
0

我想在windows 7 64位下使用scons構建一個程序。我也有Microsoft Visual Studio C++和mingw。如何解決「scons:警告:爲目標指定了兩個不同的環境」[[但不要更改文件]]

然而,當我建立程序(包括幾個文件和子目錄)與scons的,我看到這個錯誤

two different environments were specified in target C:\....... .obj but they appear to have the same action ${TEMPFILE($SHCC _MSVC _OUTPUT _FLAG /c $CHANGED $SHCFLAGS $SHCCFLAGS $_CCCOMCOM 

注:.....是我想要的文件的路徑安裝。

當我在stackoverflow搜索,我看到這個問題提到,並有解決方案,但我的問題是,我不應該改變程序的代碼,因爲我敢肯定代碼是真實的。

如果你給我任何想法,我會真正感謝你的幫助

回答

4

首先,這不是一個錯誤。這是一個警告。因此它不會停止你的構建。如果你的構建失敗了,那是因爲別的。

這個警告意味着你的構建中有兩個或多個庫或程序需要相同的.o文件。這當前不是問題,但是如果您(比如說)爲一個實例更改編譯開關,這意味着您對同一個對象有2個不兼容的需求集,並且這會導致構建錯誤。

+0

感謝先生是有用 – alex

2

正如前面的評論所述,問題是有一個目標(=一個目標文件),它有兩種編譯方式。 我的建議是使用VariantDir構建兩個版本。這爲兩種環境提供了不同的輸出。

例如。

build_flavors = ['mingw', 'VS']: 
for flavor in build_flavors: 
    env = Environment() 
    VariantDir(os.path.join('build', flavor)) 
    # build using the environment 

如果您正在使用SConscripts,你可以傳遞一個variant_dir='some/variant/dir呼叫。

+0

感謝您的幫助 – alex

0

有一個scons的標誌來關閉此警告:

scons --warn=no-duplicate-environment 
+0

雖然這可能安靜的問題,還有與用戶的scons的使用問題。 – bdbaddog

相關問題