2012-10-04 108 views
0

我有一个在Linux上运行的应用程序。 现在,对于这个应用程序,我需要从不同的路径复制一些库。使用Makefile的不同平台支持

对于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

您可以使用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/ 
+0

谢谢。很好的信息。 – dipanjan