前言
之前因为 vscode 的崩溃(日前 vscode 已经有两次崩溃了,表现为无法编译 ccpp 语言的文件,去年一次今年一次)和复制粘贴出错问题(详见我的 B 站文章,排查出来的原因是自动保存时 clang-format 会自动覆盖原有文件),迫使我选择了 CLion 作为开发工具(别问为什么不用 VS 和 vim)
CLion 也不好用……
正文
下个 vscode 或 CLion,这个自己下去;
下载 Uncrustify;
或者直接下我的压缩包,然后把文件夹整体放到 C:/Program Files
里,不用添加环境变量(很轻量化);(不许问我为什么只能在线解压)
vscode 下载 VSCode Uncrustify 插件,CLion下载Uncrustify 插件;
下文提到的工具除两个平台外在我的第一篇文章里都能找到下载链接;
打开你的 vscode 或 CLion 的设置界面,找到设置-拓展,找到 Uncrustify,添加配置文件路径和 exe 文件路径,用绝对路径,注意转义字符的问题;
然后你就能用了。
关于astyle
配置简单,自带我最推荐的 Java 格式,但是有点过于简单了,不适合对格式有高要求或极高要求的人;关于这点,Clang-Format 有 200 项设置,而 uncrustify 有 800 多项配置,所以这次的文件没有翻译(哪有时间和精力给你们翻译几千行的设置和注释啊)。
关于赠品
因为 CLion 用的是 CMake 来创建和管理项目,所以我在此特意发一下我常用的配置文件(除了项目名称以外其他所有东西都不要动,切记)。
下面这个是 CMakeLists.txt
# 指定 CMake 最低版本
cmake_minimum_required(VERSION 3.31.4)
# 设置项目名称
project(自己填去)
# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED True)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build/Debug")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug")
else(CMAKE_BUILD_TYPE STREQUAL "Release")
set(CMAKE_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build/Release")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin/Release")
endif()
# 包含头文件目录及其所有子目录
include_directories(include)
# 递归查找 src 文件夹及其子文件夹中的所有 .cpp 文件
file(GLOB_RECURSE SRC_FILES "src/*.cpp")
# 添加可执行文件
add_executable(${PROJECT_NAME} ${SRC_FILES})
下面这两个是 build_Debug.bat
和 build_Release.bat
,用 MinGW64 和 Ninja 编译的
build_Debug.bat
@echo off
if not exist "build/Debug" (
md "build/Debug"
)
cd "build/Debug"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ../..
ninja
pause
build_Release.bat
@echo off
if not exist "build/Release" (
md "build/Release"
)
cd "build/Release"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../..
ninja
pause
你在项目界面下放上这两个文件,然后建立 src
include
这两个文件夹,把你所有的 ccpp 文件放到 src
里,把所有的 hhpp 文件放到 include
里
该引用正常引用,可以在里面加很多文件夹,只需要你在 # include
里加上文件相对于 include
文件夹的相对路径(比如任一文件调用 include
下的 Menu
文件夹里的 LoginWindow.h
文件,请写 # include "Menu/LoginMenu.h"
);
然后点击 build.bat
运行就好了。
CMake 和 MinGW 也自己下去。
如果看不懂,请催更我单独写一篇详细的 CMake 入门教程。