2012-10-04 155 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