【问题标题】:makefile patsubst module/src/class.cpp to build/module/class.omakefile patsubst module/src/class.cpp 到 build/module/class.o
【发布时间】:2017-03-09 11:09:47
【问题描述】:

我正在为我的项目编写makefile,结构是

.
├── file
│   ├── include
│   │   └── FileIO.hpp
│   └── src
│       └── FileIO.cpp
├── main
├── main.cpp
├── makefile
├── ui
│   ├── include
│   │   ├── KeyValues.hpp
│   │   ├── MAP.hpp
│   │   ├── NotifyMessageVo.hpp
│   │   ├── Str2MAP.hpp
│   │   └── Value.hpp
│   ├── makefile
│   └── src
│       └── Str2MAP.cpp

所以我想使用patsubst 从每个模块的 *.cpp 生成 objs 文件。例如,我想从 file/src/FileIO.cpp 生成 build/file/FileIO.o。我只是不知道如何通过makefile自动生成它。

【问题讨论】:

  • 还有ui/src/foo.cpp => build/ui/foo.o?
  • @Beta 是的,我选择OBJ := $(patsubst %.cpp, $(BUILD_ROOT)/%.o, $(SRC))OBJ := $(foreach o, $(OBJ), $(subst /src/,, $(o))),同时$(BUILD_ROOT)=build

标签: makefile wildcard


【解决方案1】:
OBJ := $(patsubst %.cpp,build/%.o,$(SRC))
OBJ := $(subst /src/,/,$(OBJ))

或一行:

OBJ := $(patsubst %.cpp,build/%.o,$(subst /src/,/,$(SRC)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-27
    • 2016-04-29
    • 2013-07-27
    • 1970-01-01
    • 2018-12-05
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多