我希望通过制作一个相对通用的Makefile来减轻后续工作的负担,以便在最小程度地修改Makefile的情况下为我组合相对简单的C++项目。
到目前为止,我已经让它使用同一目录和指定子目录中的所有.cpp文件,并将所有这些文件放置在obj子目录的匹配结构中,并将结果文件放置在名为bin的另一个子目录中。基本上就是我想要的。
然而,尝试创建所需的obj和bin目录(如果它们不存在)在跨平台上提供了困难 - 具体来说,我只是在Windows 7和Ubuntu(无法记住版本)上进行测试,我无法同时在两个平台上使其正常工作。
Windows错误解读mkdir -p dir并创建一个-p目录,显然,两个平台分别使用\和/作为路径分隔符 - 当使用错误的分隔符时,我会收到错误消息。
以下是与Makefile相关的一些选定部分:
到目前为止,我已经让它使用同一目录和指定子目录中的所有.cpp文件,并将所有这些文件放置在obj子目录的匹配结构中,并将结果文件放置在名为bin的另一个子目录中。基本上就是我想要的。
然而,尝试创建所需的obj和bin目录(如果它们不存在)在跨平台上提供了困难 - 具体来说,我只是在Windows 7和Ubuntu(无法记住版本)上进行测试,我无法同时在两个平台上使其正常工作。
Windows错误解读mkdir -p dir并创建一个-p目录,显然,两个平台分别使用\和/作为路径分隔符 - 当使用错误的分隔符时,我会收到错误消息。
以下是与Makefile相关的一些选定部分:
# Manually edited directories (in this example with forward slashes)
SRC_DIR = src src/subdir1 src/subdir2
# Automagic object directories + the "fixed" bin directory
OBJ_DIR = obj $(addprefix obj/,$(SRC_DIR))
BIN_DIR = bin
# Example build target
debug: checkdirs $(BIN)
# At actual directory creation
checkdirs: $(BIN_DIR) $(OBJ_DIR)
$(BIN_DIR):
@mkdir $@
$(OBJ_DIR):
@mkdir -p $@
以下内容是关于IT技术的翻译:
这篇文章是我在过去一周左右从各种来源(主要是Stack Overflow)收集而来的,所以如果其中存在错误或者任何不合适的做法,请务必告知我。
问题简述:
有没有一种简单的方法可以从一个单一的makefile中实现目录创建,并尽可能地提供可移植性?