4

我想使用 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吗?
4

0 回答 0