📜  如何将编译后的文件保存在单独的目录中?(1)

📅  最后修改于: 2023-12-03 15:38:46.311000             🧑  作者: Mango

如何将编译后的文件保存在单独的目录中?

在编写程序时,经常需要将源代码进行编译,生成可执行文件(或者类库、DLL 等)。但有的时候,我们并不希望这些编译生成的文件和源代码放在同一个目录下,因为它们通常比较大、比较杂乱,会影响源代码的可维护性。因此,我们希望能够将编译生成的文件保存在单独的目录中,这样既能够保持源代码的整洁,又能方便地管理编译生成的文件。

指定编译生成目录

在编译时,我们可以使用编译器提供的一些选项,来指定编译生成的目录。以 gcc 编译器为例,可以使用 -o 选项来指定输出文件的名称和路径。例如,下面的命令会将 main.c 编译成 build/main 可执行文件:

$ gcc main.c -o build/main

需要注意的是,如果指定的目录不存在,编译器不会自动创建该目录,这时需要我们自己手动创建。

使用 Makefile

对于较大的项目,我们通常会使用 Makefile 来管理编译。Makefile 是一种类似于脚本的文件,可以自动化执行编译、链接、打包等工作。在 Makefile 中,我们可以使用变量来存储编译生成的目录,例如:

# 指定编译生成目录
BUILD_DIR = build

# 编译目标文件
$(BUILD_DIR)/%.o: %.c
    mkdir -p $(dir $@)  # 如果目录不存在,创建目录
    gcc -c $< -o $@     # 编译目标文件

在上述代码中,BUILD_DIR 变量存储了编译生成的目录,mkdir -p 命令用于创建目录,$(dir $@) 是一个 Makefile 内置的函数,用于获取目标文件所在的目录。通过这样的设置,我们就可以将编译生成的文件保存在单独的目录中了。

总结

将编译生成的文件保存在单独的目录中,有利于保持源代码整洁、方便管理生成的文件。我们可以利用编译器提供的选项,或使用 Makefile 等工具来进行设置,实现这一功能。