我的問題與Targeting both 32bit and 64bit with Visual Studio in same solution/project類似。如何在Visual Studio for C/C++中的makefile中同時編譯32位和64位應用程序?
但是,我需要在GNUmakefile中完成此操作。
例如,如果我想通過gcc
交叉編譯32個64位應用程序,我可以編譯和鏈接過程中使用-m32
& -m64
標誌。這種方法對於visual studio是不同的,因爲我必須運行vcvarsall.bat x86
來編譯32位,使用vcvarsall.bat x64
來編譯64位來設置我的編譯環境。
all: foo.exe foo64.exe
foo.exe: obj32/foo.o
link.exe /MACHINE:X86 $(OTHER_FLAGS) /out:[email protected] $^
foo64.exe: obj64/foo.o
link.exe /MACHINE:X64 $(OTHER_FLAGS) /out:[email protected] $^
obj32/foo.o: foo.c
cl.exe $(CFLAGS) $(INCLUDE_DIRS) /[email protected] /c $<
obj64/foo.o: foo.c
cl.exe $(CFLAGS) $(INCLUDE_DIRS) /[email protected] /c $<
上述樣品是行不通的,因爲你需要重新運行vcvarsall.bat環境腳本在32位和64位的編譯之間。如果我嘗試運行時86 vcvarsall.bat後編譯上面的示例生成,我將要連結的64位可執行文件時出現此錯誤:
fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
是否有我們可以完成建設路32和一個調用make的64位應用程序?
謝謝,就是這樣!如果在編譯之前未運行vcvar,則需要將INCLUDE環境設置爲指向Windows SDK包含目錄和Visual Studio VC包含目錄。 – 2011-04-28 14:58:17