我想使用 C++20 中的新模块功能,据我了解,gcc 和 clang 似乎都实现了足够的可用功能。
现在,基本上我在网上看到的所有代码示例都分别编译所有模块并手动指定它们的顺序。有没有办法make
自动找到不同模块之间的依赖关系?
我很想写一个Makefile
基本上看起来像这样的:
# ...
SRC := $(find $(SRCDIR) -name "*.cpp")
OBJ := $(SRC:.cpp=.o)
PCM := $(SRC:.cpp=.pcm)
*.pcm: CXXFLAGS += -Xclang -emit-module-interface
# ...
$(EXE): $(OBJ)
$(LD) $(LDFLAGS) -o $@ $^
$(OBJ): %.o: %.cpp %.pcm
$(CXX) $(CXXFLAGS) -o $@ $<
$(PCM): %.pcm: %.cpp
$(CXX) $(CXXFLAGS) -o $@ $<
但这显然是行不通的,因为make
不知道模块需要按什么顺序编译。
所以:
- 拥有适用于 C++ 模块的通用 Makefile 的正确方法是什么?
- 对于使用 C++ 模块和的非平凡项目有一个很好的例子
make
吗?
此外:
- 对于使用 C++ 模块和的非平凡项目有一个很好的例子
cmake
吗?