c++ 的makefile文件实例
生活随笔
收集整理的這篇文章主要介紹了
c++ 的makefile文件实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
首先聲明, 感謝九哥的幫助,因為從來沒寫過makefile, 所以一直是手動編譯,
然后有一次寫了三個文件, 需要編譯, 而我只編譯了一個文件, 所以一直出錯, 九哥告訴我用makefile更方便, 可以學習一下
于是我就寫了看了很多的blog, 然后向九哥要了這么個東西, 據說還有可以生成的工具
########################################### #Makefile for simple programs ########################################### #INC 是你項目包含的目錄 INC= #LIB是你需要鏈接的庫 LIB= -lpthread #CC是一個變量名 可以隨便起,這里代表你的編譯器 CC=g++ #LINK是鏈接的程序 LINK=g++ #LDFLAGS是鏈接的選項 LDFLAGS= #CC_FLAG 是編譯選項 CC_FLAG=-Wall -m64# PRG=操作符重載, 這里是目錄名字 PRG=aa # 這里是空格隔開, 不能是逗號,需要注意 # root@corleone:/opt/code/testC++/aa# ls # makefile mytime0.cpp mytime.h usertime0.cpp # 上面這是目錄下的文件, 那需要寫幾個.o的文件呢? 就這么寫 OBJ=mytime0.o usertime0.o#當你make 后 編譯器會去找 $(XXXX):$(xxxx) 的那一行 #你會發現它下面是一個 table縮進, table縮進 表示要執行那個命令 #然后編譯器會查看 "-o $@" 后面的目標有沒有生成或者更新,沒有就重新編譯那個目標文件 #比如這里$(OBJ)是各種.o文件, 那么就會先編譯這些.o文件 會去執行.cpp.o:下面的縮進命令$(PRG):$(OBJ)$(CC) $(INC) $(LIB) -o $@ $(OBJ)#.SUFFIXES表示后綴名 #這里表示要把INC下面的所有后綴是cpp或者c的編譯成.o文件 .SUFFIXES: .c .o .cpp .cpp.o:$(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o.PRONY:clean clean:@echo "Removing linked and compiled files......"rm -f $(OBJ) $(PRG)?
########################################### #Makefile for simple programs ########################################### #INC 是你項目包含的目錄 INC= #LIB是你需要鏈接的庫 LIB= -lpthread #CC是一個變量名 可以隨便起,這里代表你的編譯器 CC=g++ #LINK是鏈接的程序 LINK=g++ #LDFLAGS是鏈接的選項 LDFLAGS= #CC_FLAG 是編譯選項 CC_FLAG=-Wall -m64PRG=threadpooltest OBJ=CThreadManage.o CThreadPool.o CThread.o CWorkerThread.o threadpooltest.o#當你make 后 編譯器會去找 $(XXXX):$(xxxx) 的那一行 #你會發現它下面是一個 table縮進, table縮進 表示要執行那個命令 #然后編譯器會查看 "-o $@" 后面的目標有沒有生成或者更新,沒有就重新編譯那個目標文件 #比如這里$(OBJ)是各種.o文件, 那么就會先編譯這些.o文件 會去執行.cpp.o:下面的縮進命令$(PRG):$(OBJ)$(CC) $(INC) $(LIB) -o $@ $(OBJ)#.SUFFIXES表示后綴名 #這里表示要把INC下面的所有后綴是cpp或者c的編譯成.o文件 .SUFFIXES: .c .o .cpp .cpp.o:$(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o.PRONY:clean clean:@echo "Removing linked and compiled files......"rm -f $(OBJ) $(PRG)########################################### #這里舉個復雜的例子 ############################################1 先找到$(XXXX):$(xxxx) #2 去找"-o $@" 后面的目標有沒有生成或者更新,有就重新編譯那個目標 #3 "-o $@" 后面所有的目標都好了就開始鏈接主程序了 # 編譯和鏈接都需要一些選項 #4 >> output表示輸出重定向到文件,這樣出錯了比較好查找 all_objs= xxx1.o ../xxx2.o ../../xxx3.o #all_libs是鏈接的庫, -L指定庫的目錄, -l指定庫的名字 all_libs=-L../../sourceapp/qmarket/xykjclient/ -lMarketApi -lACE #$(target): $(all_objs) # $(LINK) $(LDFLAGS) -o $@ $(all_objs) $(all_libs) $(LIB) >> output#你可以自己加一些選項 比如下面的test 你在命令行 執行 make test,他就會執行那個縮進的命令 test:@echo "this is test" View Code?
轉載于:https://www.cnblogs.com/renfanzi/p/9213421.html
總結
以上是生活随笔為你收集整理的c++ 的makefile文件实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tomcat下jaas配置实例
- 下一篇: [HAOI2008]糖果传递 结论题