내 질문은 Targeting both 32bit and 64bit with Visual Studio in same solution/project과 (과) 비슷합니다.Visual Studio for C/C++에서 메이크 파일로 32 비트 및 64 비트 응용 프로그램을 동시에 컴파일하는 방법은 무엇입니까?
그러나 GNUmakefile에서이 작업을 수행해야합니다. 내가 gcc
를 통해 32 비트 및 64 비트 응용 프로그램을 컴파일 교차하고 싶다면
예를 들어, 내가 컴파일 및 링크시 -m32
& -m64
플래그를 사용할 수 있습니다. 이 방법은 비주얼 스튜디오와 다릅니다. 왜냐하면 32 비트 용으로 컴파일하려면 vcvarsall.bat x86
을, 컴파일 용 환경을 설정하려면 vcvarsall.bat x64
을 64 비트 실행해야하기 때문입니다. 당신이 32 비트 및 64 비트의 컴파일 사이에 vcvarsall.bat 환경 스크립트를 다시 실행해야하기 때문에
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의 86을 실행 한 후 위의 샘플 메이크 파일을 컴파일하려고하면 64 비트 실행에 연결하려고 할 때, 나는이 오류를 얻을 것이다 :
fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
를 우리가 구축 수행 할 수있는 방법이 있나요 32과 make를 한 번 호출하면 64 비트 응용 프로그램을 사용할 수 있습니까?
감사합니다. 컴파일하기 전에 vcvar를 실행하지 않은 경우 Windows SDK 포함 디렉터리와 Visual Studio VC 포함 디렉터리를 가리 키도록 INCLUDE 환경을 설정해야합니다. –