大家都是手写 Makefile 的吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kevinyoung
V2EX    Linux

大家都是手写 Makefile 的吗?

  •  
  •   kevinyoung 2015-09-24 16:36:08 +08:00 5860 次点击
    这是一个创建于 3670 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写了不少 Makefile 了感觉还是写起来不舒服,难道是姿势不对?

    隐约知道应该能自动生成 Makefile 的,但不太了解具体用什么工具。

    所以大家都是手写的还是用其他工具生成的?
    15 条回复    2016-01-01 16:09:06 +08:00
    xylophone21
        1
    xylophone21  
       2015-09-24 16:41:45 +08:00   1
    cmake
    Dragonite
        2
    Dragonite  
       2015-09-24 16:53:09 +08:00   1
    有个叫 autotools 的工具, gnu 的
    pi1ot
        3
    pi1ot  
       2015-09-24 16:59:54 +08:00   1
    cmake ,人类可理解,没有 automake 那么虐心
    chmlai
        4
    chmlai  
       2015-09-24 17:00:39 +08:00
    cmake
    lsmgeb89
        5
    lsmgeb89  
       2015-09-24 17:00:50 +08:00 via iPad   1
    cmake 不过这种东西都差不多,上手前看文档,用熟了都一样。
    oska874
        6
    oska874  
       2015-09-24 17:11:26 +08:00   1
    手写 加 拷贝
    paw
        7
    paw  
       2015-09-24 17:16:01 +08:00
    automake 啊
    tinyproxy
        8
    tinyproxy  
       2015-09-24 18:52:10 +08:00 via iPhone
    gyp 你可以试试()
    bramblex
        9
    bramblex  
       2015-09-24 18:54:51 +08:00
    嗯,我会自己写一个脚本生成 makefile ……不过 makefile 的静态模式还是挺好用的就是了
    bramblex
        10
    bramblex  
       2015-09-24 18:56:47 +08:00
    source_file = $(shell ls src/)
    objects = $(foreach o, $(source_file), $(subst .js, ,$(o)))
    target_files = $(foreach o, $(objects), dist/$(o).js)
    mini_target_files = $(foreach o, $(objects), dist/min/$(o).min.js)

    .PHONY: all
    all: modules

    dist:
    @mkdir -p dist

    dist/min: dist
    @mkdir -p dist/min

    .PHONY: modules
    modules: dist $(target_files)

    .PHONY: minify
    minify: dist/min $(mini_target_files)

    $(target_files):dist/%.js:src/%.js
    tools/UMDT/umdt $< $@

    $(mini_target_files):dist/min/%.min.js:dist/%.js
    java -jar tools/compiler/compiler.jar $< --js_output_file=$@

    .PHONY: clean
    clean:
    rm -r dist

    ==================================
    就是 % @ < $ 这几个符号比较蛋疼,其他都还好理解。
    dididada
        11
    dididada  
       2015-09-25 13:52:45 +08:00
    用 shell 脚本生成的
    doyoubi
        12
    doyoubi  
       2015-09-26 23:25:00 +08:00
    premake 简单易用
    fuxpro
        13
    fuxpro  
       2015-10-06 19:08:08 +08:00
    小工程可以直接手写 makefile ,不过对于团队化的项目管理,不推荐这么做,团队化的项目管理,对于构建文件应该采用模板机制, 可以先根据项目的结构制作一个模块,在这个模块的基础上进行增强维护。

    另外的一种方法是采用 cmake 之类的工具。目前参与过的项目基本上都是自己维护自己的模板,使用 cmake 的也不是很多。

    个人更倾向于使用 cmake 之类的工具。
    Owenjia
        14
    Owenjia  
       2015-10-14 00:17:48 +08:00
    SCons 或者 CMake 吧,简单的小程序手写还行。
    waruqi
        15
    waruqi  
       2016-01-01 16:09:06 +08:00
    xmake ,我的所有个人项目都用这个,个人觉得比 cmake 好用,简单方便,也是跨平台的。。。

    https://github.com/waruqi/xmake
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2417 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:09 PVG 09:09 LAX 18:09 JFK 21:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86