Hvordan kan jeg indstille CC og AR i Makefile, der fungerer for både Windows og Linux platforme?

Indlæg af Hanne Mølgaard Plasc

Problem



Mit teammedlem bruger et Windows-byggemiljø, og Makefile har:


CC := $(ANDROID\_NDK\_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86\_64/bin/aarch64-linux-android-gcc.exe
AR := $(ANDROID\_NDK\_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86\_64/bin/aarch64-linux-android-ar.exe


Hvor ANDROID\_NDK\_HOME er en miljøvariabel, som brugeren skal indstille.


Jeg vil bruge den samme Makefile på min Ubuntu-installation, men vil gerne ændre Makefile, så vi begge kan bruge den samme Makefile. Er det muligt? I mellemtiden har jeg foretaget følgende ændring, som virker.


CC := $(ANDROID\_NDK\_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86\_64/bin/aarch64-linux-android-gcc
AR := $(ANDROID\_NDK\_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86\_64/bin/aarch64-linux-android-ar


I grunden er ændringen 'windows-x86' til linux-x86 og fjernet .exe i binærets navn.


Eventuelle tips/pointers værdsat. Tak.

Bedste reference


Du kan gren på en OS-specifik miljøvariabel. For eksempel: COMSPEC er altid indstillet til ikke-tom værdi på Windows og sandsynligvis ikke defineret på andre platforme.


ifneq ($(COMSPEC),)
  # Windows
  CC := $(ANDROID\_NDK\_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86\_64/bin/aarch64-linux-android-gcc.exe
  AR := $(ANDROID\_NDK\_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86\_64/bin/aarch64-linux-android-ar.exe
else
  # Not Windows
  CC := $(ANDROID\_NDK\_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86\_64/bin/aarch64-linux-android-gcc
  AR := $(ANDROID\_NDK\_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86\_64/bin/aarch64-linux-android-ar
endif