可移植地编译整个目录
Portably Compile Entire Directory
是否有一种干净/可移植的方法可以从给定目录递归下降,将所有找到的.cpp
文件编译为一个输出文件?我不确定makefile是否能够做到这一点,或者它是否是某种构建脚本的工作,但我希望避免在代码中维护各种IDE的项目文件。
这里可以做不同的事情。我建议你使用多平台构建系统,并遵循文档。我过去使用过CMake,但我不知道如何告诉它编译目录中的所有文件。
优点是用户可以使用CMake为大多数常见的IDE生成项目文件,因此它将允许VisualStudio用户生成VS解决方案,MacOSX用户生成Xcode项目,在几乎任何环境中的Eclipse CDK项目,Makefiles。。。
有一个通配符函数可以用来匹配这样的模式:
CXX_FILES = $(wildcard src/*.cpp) # All .cpp files in the directory
这不是递归的,但至少可以使您不必手动指定某个目录中的文件。构建它们的规则看起来像这样:
CXX_FILES = $(wildcard src/*.cpp) # All .cpp files in the directory
OBJ_FILES = $(CXX_FILES:src/%.cpp=$(OBJ_DIR)/%.o) # Corresponding .o files
# Rules
all: $(OBJ_FILES)
g++ $(OBJ_FILES) -o output_filename
$(OBJ_DIR)/%.o: src/%.cpp
g++ -c $< -o $@
哦,为了回答你的问题,这个方法是完全可移植的。
相关文章:
- C++Union/Struct位域的实现和可移植性
- 具有Qt事件循环的可移植通用共享库设置
- 没有执行策略的 std::transform_reduce 是可移植的吗?
- 如何在 c++ 中正确指定 #include 路径以使程序可移植
- 创建异构顶点数据数组的可移植方法
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- 静态库可移植性
- 从非类型模板参数声明 constexpr 数组的可移植方法
- C++:Unicode 字符串文字的可移植性
- 编译可执行文件之前未生成的文件
- 如何使Visual Studio 2017 C++项目在计算机之间更具可移植性
- 是在同一体系结构上运行的静态编译的纯标准C 程序可移植
- 如何编写完全可移植的 4 字节字符常量的编译时初始化
- c++编译为可移植程序集
- 一种在编译时用C++根据printf格式检查参数的可移植方法
- 如何将C++编译成可移植的LLVM代码
- 检查表达式是否编译的可移植方法
- 可移植地编译整个目录
- Jamfile的可移植编译参数
- 不能在GCC下编译的可移植存档