使用Makefile的不同平台支持

时间:2012-10-04 05:36:43

标签: makefile preprocessor

我在Linux和Linux上运行了一个应用程序苹果电脑。 现在,对于这个应用程序,我需要从不同的路径复制一些库。

对于Linux, cp ../gccRelease/libMsSipRelease.a ../../ VoipAppLinux / lib /

对于Mac, cp ../DerivedData/MsSipLib/Build/Products/Debug/libMsSipLib.dylib ../../ VoipAppLinux / lib /

正如您所看到的,两条路径都不同。 现在,我的问题是我可以在make文件中使用#ifdef Linux或#ifdef APPLE 。如果可以的语法是什么? 如果#ifdef无法在makefile中使用,那么我该如何解决这个问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用ifdef APPLE,但这是一种更自动的方式:在makefile中,像$(shell uname -s)这样的命令会告诉Make什么是操作系统。试试这个:

OS := $(shell uname -s)
ifeq ($(OS),Linux)
MSSIPLIB := ../gccRelease/libMsSipRelease.a
else
MSSIPLIB := ../DerivedData/MsSipLib/Build/Products/Debug/libMsSipLib.dylib
endif

# And later on
cp $(MSSIPLIB) ../../VoipAppLinux/lib/