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

大家都是手写 Makefile 的吗?

  •  
  •   kevinyoung · 2015-09-24 16:36:08 +08:00 · 5404 次点击
    这是一个创建于 3348 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写了不少 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   ·   实用小工具   ·   978 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:55 · PVG 03:55 · LAX 11:55 · JFK 14:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.