windows 有没有更好的方法来编写我的makefile?

i7uq4tfw  于 2022-12-30  发布在  Windows
关注(0)|答案(1)|浏览(175)

我有这个生成文件

# Compiler and flags
CC = g++
CFLAGS = -Iinclude

# Source and object files
SOURCES = $(wildcard src/*.cpp)
OBJS = $(patsubst src/%.cpp,obj/%.o,$(SOURCES))

# Dependency files
DEPS = $(patsubst src/%.cpp,obj/%.d,$(SOURCES))

# Include dependency files
-include $(DEPS)

# Build object files from source files
obj/%.o: src/%.cpp
    $(CC) -c -o $@ $< $(CFLAGS)
    $(CC) -MM -MT $@ -MF $(patsubst %.o,%.d,$@) $<

# Build library from object files
libui.a: $(OBJS)
    ar rcs $@ $^
    ranlib $@
    copy vui.hpp include/vui.hpp

# Clean object files and library
.PHONY: clean

clean:
    del obj\*.o obj\*.d libui.a

这是我的工作区

workspace
├── include
│   ├── UI_Button.hpp
│   ├── UI_CheckBox.hpp
│   ├── UI_Console.hpp
│   ├── UI_ScrollBar.hpp
│   ├── UI_Slider.hpp
│   ├── UI_TextBox.hpp
│   └── vui.hpp
├── src
│   ├── UI_Button.cpp
│   ├── UI_CheckBox.cpp
│   ├── UI_Console.cpp
│   ├── UI_ScrollBar.cpp
│   ├── UI_Slider.cpp
│   └── UI_TextBox.cpp
├── obj
│   ├── UI_Button.o
│   ├── UI_CheckBox.o
│   ├── UI_console.o
│   ├── UI_ScrollBar.o
│   ├── UI_Slider.o
│   └── UI_TextBox.o
├── libui.a
└── Makefile

现在makefile已经构建了所有的东西,我得到了一个错误

copy vui.hpp include/vui.hpp
The system cannot find the file specified.
make: *** [Makefile:24: libui.a] Error 1

当我尝试重做时,我需要删除所有内容,因为它只检查UI_Button.o,并说它是最新的,即使我更改了任何其他.hpp或.cpp文件,它不想重建。有什么方法可以修复这两个错误吗?vui.hpp只包括所有其他头文件。

z0qdvdin

z0qdvdin1#

不确定copydel是什么,但我假设copy a b将文件a复制到b

# Build library from object files
libui.a: $(OBJS)
    ar rcs $@ $^
    ranlib $@
    copy vui.hpp include/vui.hpp

不依赖于vui.hpp,我也没有看到任何在源根目录中创建vui.hpp的规则,也没有看到它列在源树中的文件中,所以,根本就没有这样的文件。
如果你想继续使用这个命令,不要让它在一个完全不相关的方法中运行,而是要有一个额外的方法:

include/vui.hpp: vui.hpp
    copy vui.hpp include/vui.hpp

相关问题