Makefile 自訂請教
各位好,
小弟有一個關於makefile的問題想請教各位.
小弟有一程序, 用makefile通過make來進行編譯動作, 但所有原代碼檔案及makefile都在同一目錄下, 若我把原代碼及makefile分開存放, 那麼makefile應該如何寫, 才可以進行make的動作呢...
例如:
- /root
- +---- myprogram/
- +------ Makefile
- |------ hello.c
- |------ hello.h
- 若果把源代碼分開
- /root
- +---- myprogram/
- +------ Makefile
- |------ src/
- +------ hello.c
- |------ hello.h
- |------ Makefile
复制代码
那麼, 在src內的makefile應該如何和上一層的makefile連接呢. 應該怎樣更改呢. 謝謝指教. thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
謝謝了.. 再試下先...頂... 多收集意見及方法...
参考"recursive make"递归make
bash-2.03$ ls
make.ini makefile src
bash-2.03$ cat make.ini
INCL=/usr/local/mysql/include/mysql
LIB=/usr/local/mysql/lib/mysql
localpath=/data3/tch/tch/mysql
localsrc=/data3/tch/tch/mysql/src
bash-2.03$ cat makefile
include ./make.ini
all: mkexe
mkexe:
cd $(localsrc); make; cd $(localpath)
clean:
cd $(localsrc); make clean; cd $(localpath)
bash-2.03$ cd src
bash-2.03$ ls
makefile tmysql.c
bash-2.03$ cat makefile
include ../make.ini
tmysql:tmysql.o
gcc -o $@ $< -L$(LIB) -lmysqlclient -lz
tmysql.o:tmysql.c
gcc -c -o $@ $< -I$(INCL)
clean:
rm -rf tmysql.o tmysql
bash-2.03$ cd ..
bash-2.03$ make
cd /data3/tch/tch/mysql/src; make; cd /data3/tch/tch/mysql
make[1]: Entering directory `/data3/tch/tch/mysql/src'
gcc -c -o tmysql.o tmysql.c -I/usr/local/mysql/include/mysql
gcc -o tmysql tmysql.o -L/usr/local/mysql/lib/mysql -lmysqlclient -lz
make[1]: Leaving directory `/data3/tch/tch/mysql/src'
相同的变量可以放到make.ini,不同的可以放到各个不同的makefile中
謝謝, 若果需要在src 內加多一個makefile去控制編譯src內的東東, 那麼, 最頂層的makefile應該如何寫呢, 再請指教.
如果只是源码和 makefile 分开目录:
复制代码
学习一下
成功了吗?
你所说的 "環境變數" 是什么?
謝謝. 但myprogram下的makefile和src內的makefile, 環境變數可以不同嗎...
在 +---- myprogram/
目录下的Makefile里面,需要的命令处加入 cd src/;make 就可以了.
[ 本帖最后由 mq110 于 2006-2-3 18:26 编辑 ]