Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

编译构建、测试与运行诊断命令 · 编译、链接与执行项目构建至格式化代码与删除未使用导入 ​

返回分篇目录

编译构建、测试与运行诊断命令 ​

编译、链接与执行项目构建 ​

单文件 Java 编译与项目编译流程相邻,再查任务运行器、构建系统、链接器和 Zig。

打开本条命令的完整说明与示例。

javac build · 将 Java 源码编译到独立输出目录 ​

  • 指定编码与输出目录:
bash
javac -encoding UTF-8 -d {{classes}} {{src/Main.java}}
  • 面向指定 Java 版本编译:
bash
javac --release {{17}} -d {{classes}} {{src/Main.java}}
  • 添加编译依赖:
bash
javac -cp {{lib/library.jar}} -d {{classes}} {{src/Main.java}}
  • 启用警告并将警告视为错误:
bash
javac -Xlint:all -Werror -d {{classes}} {{src/Main.java}}

jbang · 简便地创建、编辑和运行仅包含源代码的自包含 Java 程序 ​

另请参阅:java。 更多信息:https://www.jbang.dev/documentation/jbang/latest/cli/jbang.html。

  • 初始化一个简单的 Java 类:
bash
jbang init {{路径/到/文件.java}}
  • 初始化一个 Java 类(用于脚本编写):
bash
jbang init {{[-t|--template]}}={{cli}} {{路径/到/文件.java}}
  • 使用 jshell 在 REPL 编辑器中探索和使用脚本及其任何依赖项:
bash
jbang run {{[-i|--interactive]}}
  • 设置一个临时项目以在 IDE 中编辑脚本:
bash
jbang edit --open={{codium|code|eclipse|idea|netbeans|gitpod}} {{路径/到/脚本.java}}
  • 运行 Java 代码片段(Java 9 及以后版本):
bash
{{echo 'Files.list(Paths.get("/etc")).forEach(System.out::println);'}} | jbang -
  • 运行命令行应用程序:
bash
jbang {{路径/到/文件.java}} {{命令}} {{参数1 参数2 ...}}
  • 在用户的 $PATH 中安装一个脚本:
bash
jbang app install --name {{命令名称}} {{路径/到/脚本.java}}
  • 安装一个特定版本的 JDK 以与 jbang 一起使用:
bash
jbang jdk install {{版本}}

just · 保存并运行项目特定的命令 ​

更多信息:https://manned.org/just。

  • 运行在 justfile 中指定的配方:
bash
just {{配方}}
  • 在项目根目录初始化新的 justfile:
bash
just --init
  • 在默认编辑器中编辑 justfile:
bash
just {{[-e|--edit]}}
  • 列出 justfile 中可用的配方:
bash
just {{[-l|--list]}}
  • 打印 justfile:
bash
just --dump

make · Makefile 文件描述目标的任务运行器 ​

通常用于控制源代码中可执行文件的编译。 更多信息:https://www.gnu.org/software/make/manual/make.html。

  • 调用 Makefile 中指定的第一个目标(通常命名为 "all"):
bash
make
  • 调用指定目标:
bash
make {{目标}}
  • 调用一个指定的目标,一次并行执行 4 个作业:
bash
make {{[-j|--jobs]}} 4 {{目标}}
  • 使用指定的 Makefile 文件:
bash
make {{[-f|--file]}} {{文件}}
  • 从另一个目录执行 make:
bash
make {{[-C|--directory]}} {{文件夹}}
  • 即使源文件未更改,也强制执行目标:
bash
make {{[-B|--always-make]}} {{目标}}
  • 覆盖在 Makefile 中定义的环境变量:
bash
make {{目标}} {{变量}}={{新值}}
  • 通过环境变量覆盖 Makefile 中定义的变量:
bash
make {{[-e|--environment-overrides]}} {{目标}}

ninja · 一个快速的构建系统 ​

更多信息:https://ninja-build.org/manual.html。

  • 在当前目录下构建:
bash
ninja
  • 在当前目录下构建,最多并行执行 4 个作业:
bash
ninja -j {{4}}
  • 在指定的目录中构建一个程序:
bash
ninja -C {{路径}}
  • 查看 target(如 install 和 uninstall):
bash
ninja -t targets
  • 显示帮助:
bash
ninja -h

qmake · 从 Qt 项目文件生成 Makefile ​

更多信息:https://doc.qt.io/qt-6/qmake-running.html。

  • 从当前目录中的项目文件生成一个 Makefile:
bash
qmake
  • 指定 Makefile 和项目文件的位置:
bash
qmake -o {{路径/到/Makefile}} {{路径/到/项目文件.pro}}
  • 生成一个默认的项目文件:
bash
qmake -project
  • 编译一个项目:
bash
qmake && make
  • 启用调试模式:
bash
qmake -d
  • 显示帮助:
bash
qmake -help

ld · 将目标文件链接在一起 ​

更多信息:https://sourceware.org/binutils/docs/ld.html#Options。

  • 将一个没有依赖项的特定目标文件链接到可执行文件中:
bash
ld {{路径/到/文件.o}} {{[-o|--output]}} {{路径/到/输出_可执行文件}}
  • 将两个目标文件链接在一起:
bash
ld {{路径/到/文件1.o}} {{路径/到/文件2.o}} {{[-o|--output]}} {{路径/到/输出_可执行文件}}
  • 将一个 x86_64 程序动态链接到 glibc (文件路径根据系统而变化):
bash
ld {{[-o|--output]}} {{路径/到/输出_可执行文件}} {{[-I|--dynamic-linker]}} /lib/ld-linux-x86-64.so.2 /lib/crt1.o /lib/crti.o -lc {{路径/到/文件.o}} /lib/crtn.o

zig · Zig 编译器和工具链 ​

更多信息:https://ziglang.org/documentation/master/。

  • 编译当前目录下的项目:
bash
zig build
  • 编译并运行当前目录下的项目:
bash
zig build run
  • 初始化一个 zig build 应用程序:
bash
zig init-exe
  • 初始化一个 zig build 库:
bash
zig init-lib
  • 创建并运行一个测试构建:
bash
zig test {{路径/到/文件.zig}}
  • 将 Zig 源码重新格式化为规范格式:
bash
zig fmt {{路径/到/文件.zig}}
  • 将 Zig 用作 C 编译器:
bash
zig cc {{路径/到/文件.c}}
  • 将 Zig 用作 C++ 编译器:
bash
zig c++ {{路径/到/文件.cpp}}

格式化代码与删除未使用导入 ​

按源语言选择格式化工具;autoflake 处理 Python 的未使用导入等项目。

gofmt · 格式化 Go 源代码 ​

更多信息:https://pkg.go.dev/cmd/gofmt。

  • 格式化文件并在控制台输出结果:
bash
gofmt {{源代码.go}}
  • 格式化文件并覆盖原文件:
bash
gofmt -w {{源代码.go}}
  • 格式化文件和简化代码并覆盖原文件:
bash
gofmt -s -w {{源代码.go}}
  • 打印所有(包括虚假的)错误:
bash
gofmt -e {{源代码.go}}

rustfmt · 格式化 Rust 源代码 ​

更多信息:https://github.com/rust-lang/rustfmt。

  • 格式化文件,就地覆盖原始文件:
bash
rustfmt {{路径/到/源文件.rs}}
  • 检查文件的格式并在控制台显示所有变更:
bash
rustfmt --check {{路径/到/源文件.rs}}
  • 在格式化前备份所有修改的文件(原始文件会以 .bk 扩展名重命名):
bash
rustfmt --backup {{路径/到/源文件.rs}}
  • 使用特定的 Rust 风格版次(格式化规则)以详细模式格式化代码:
bash
rustfmt --style-edition {{2015|2018|2021|2024}} {{[-v|--verbose]}} {{路径/到/源文件1.rs 路径/到/源文件2.rs ...}}
  • 使用特定的 Rust 版次(语言特性和解析)格式化代码:
bash
rustfmt --edition {{2015|2018|2021|2024}} {{路径/到/源文件1.rs 路径/到/源文件2.rs ...}}

uncrustify · C、C++、C#、D、Java 和 Pawn 源代码格式化工具 ​

更多信息:https://manned.org/uncrustify。

  • 格式化单个文件:
bash
uncrustify -f {{路径/到/文件.cpp}} -o {{路径/到/输出文件.cpp}}
  • 从 stdin 读取文件名,在写回原始文件路径之前创建备份:
bash
find . -name "*.cpp" | uncrustify -F - --replace
  • 不进行备份(适用于文件已在版本控制下的情况):
bash
find . -name "*.cpp" | uncrustify -F - --no-backup
  • 使用自定义配置文件并将结果写入 stdout:
bash
uncrustify -c {{路径/到/uncrustify.cfg}} -f {{路径/到/文件.cpp}}
  • 显式设置配置变量的值:
bash
uncrustify --set {{选项}}={{值}}
  • 生成新的配置文件:
bash
uncrustify --update-config -o {{路径/到/新配置文件.cfg}}

autoflake · 一个工具,用于检查 Python 代码中未被使用的引入和变量 ​

更多信息:https://github.com/PyCQA/autoflake#advanced-usage。

  • 移除指定文件中未使用的变量,并展示 diff:
bash
autoflake --remove-unused-variables {{路径/到/文件.py}}
  • 移除多个文件中未使用的引入,并展示 diffs:
bash
autoflake --remove-all-unused-imports {{路径/到/文件1.py 路径/到/文件2.py ...}}
  • 移除未被使用的变量,并覆盖更新:
bash
autoflake --remove-unused-variables --in-place {{路径/到/文件.py}}
  • 递归地移除指定文件夹下层所有文件中未使用的变量,并覆盖更新:
bash
autoflake --remove-unused-variables --in-place --recursive {{路径/到/目录}}

继续阅读