Makefile 自訂請教

发布于 2022-07-16 01:01:17 字数 1594 浏览 11 评论 9

各位好,
小弟有一個關於makefile的問題想請教各位.

小弟有一程序, 用makefile通過make來進行編譯動作, 但所有原代碼檔案及makefile都在同一目錄下, 若我把原代碼及makefile分開存放, 那麼makefile應該如何寫, 才可以進行make的動作呢...

例如:

  1. /root
  2.     +---- myprogram/
  3.                     +------ Makefile
  4.                      |------ hello.c
  5.                      |------ hello.h
  6.                   
  7. 若果把源代碼分開
  8. /root
  9.     +---- myprogram/
  10.                     +------ Makefile
  11.                      |------ src/
  12.                                 +------ hello.c
  13.                                  |------ hello.h
  14.                                  |------ Makefile

复制代码

那麼, 在src內的makefile應該如何和上一層的makefile連接呢. 應該怎樣更改呢. 謝謝指教. thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

江湖彼岸 2022-07-16 15:43:57

謝謝了.. 再試下先...頂... 多收集意見及方法...

找个人就嫁了吧 2022-07-16 15:43:55

参考"recursive make"递归make

忘东忘西忘不掉你 2022-07-16 15:43:49

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中

梦巷 2022-07-16 15:43:08

原帖由 wolf0403 于 2006-2-5 15:00 发表
如果只是源码和 makefile 分开目录:
[code]$ ls -RF
.:
Makefile  bin/  src/

./bin:

./src:
a.c
$ cat Makefile
all: bin/a.out

bin/a.out: src/a.c
        gcc src/a.c -o bin/a.out
$ make ...

謝謝, 若果需要在src 內加多一個makefile去控制編譯src內的東東, 那麼, 最頂層的makefile應該如何寫呢, 再請指教.

翻了热茶 2022-07-16 15:42:52

如果只是源码和 makefile 分开目录:

  1. $ ls -RF
  2. .:
  3. Makefile  bin/  src/
  4. ./bin:
  5. ./src:
  6. a.c
  7. $ cat Makefile
  8. all: bin/a.out
  9. bin/a.out: src/a.c
  10.         gcc src/a.c -o bin/a.out
  11. $ make
  12. gcc src/a.c -o bin/a.out
  13. $ ls bin/
  14. a.out
  15. $

复制代码

萌辣 2022-07-16 15:42:34

学习一下

最初的梦 2022-07-16 15:31:47

原帖由 惠繪洋 于 2006-2-4 10:31 发表

謝謝. 但myprogram下的makefile和src內的makefile, 環境變數可以不同嗎...

成功了吗?

你所说的 "環境變數" 是什么?

苍风燃霜 2022-07-16 15:06:29

原帖由 mq110 于 2006-2-3 18:23 发表
在 +---- myprogram/
目录下的Makefile里面,需要的命令处加入 cd src/;make 就可以了.

謝謝. 但myprogram下的makefile和src內的makefile, 環境變數可以不同嗎...

窝囊感情。 2022-07-16 12:08:06

在 +---- myprogram/
目录下的Makefile里面,需要的命令处加入 cd src/;make 就可以了.

[ 本帖最后由 mq110 于 2006-2-3 18:26 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文