V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MID
V2EX  ›  C++

makefile 如何运行所有目录的文件呢?

  •  
  •   MID · 2022-04-24 09:28:31 +08:00 · 1608 次点击
    这是一个创建于 944 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 cmake 里面是这么写的:
    cmake_minimum_required(VERSION 3.5.1)
    project(alichain)

    set(CMAKE_CXX_STANDARD 11)

    add_subdirectory("Backend Server")
    add_subdirectory("Main Server")
    add_subdirectory("Client")

    那怎么改成 makefile 呢?求助
    2 条回复    2022-04-24 21:12:01 +08:00
    ivan_wl
        1
    ivan_wl  
       2022-04-24 09:44:37 +08:00   ❤️ 1
    make 可以 shell 调用命令,如果非要用纯 make 实现的话,我目前项目中使用的:

    rwildcard = $(strip $(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2)))
    findall = $(foreach d,$1,$(call rwildcard,$(strip $d)/,$(strip $2)))

    C_SRCS := $(call findall, $(PRJ_SCOPE), *.c)
    H_SRCS := $(call findall, $(PRJ_SCOPE), *.h)

    参考 https://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make
    mxx894
        2
    mxx894  
       2022-04-24 21:12:01 +08:00   ❤️ 1
    可以调用 find 命令,生成依赖。另外 makefile 的推导功能很强大。

    C_SOURCES = $(shell find ./ -type f -iname "*.c")
    OBJECTS += $(addprefix $(BUILD)/Obj/,$(notdir $(C_SOURCES:%.c=%.o)))
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2801 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:09 · PVG 21:09 · LAX 05:09 · JFK 08:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.