4、cmake输出指令详解
约 4828 字大约 16 分钟
2025-03-03
编写者:bugcode
本文已完成并校对,部分内容引用自 计算机自学指南
CMake 命令输出内容详解
当执行 CMake 命令时,会输出大量信息。理解这些输出对于调试和优化构建过程至关重要。本指南详细解释 CMake 输出的各个部分。
目录
1. CMake 输出概述
1.1 输出格式
CMake 的输出通常包含以下部分:
[时间戳] [级别] [上下文] 消息内容例如:
-- The CXX compiler identification is GNU 9.4.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Warning at CMakeLists.txt:10 (message):
This is a warning message1.2 输出级别前缀
| 前缀 | 含义 | 颜色 | 说明 |
|---|---|---|---|
-- | STATUS | 绿色 | 普通状态信息 |
CMake Warning | WARNING | 黄色 | 警告信息 |
CMake Error | ERROR | 红色 | 错误信息 |
CMake Deprecation Warning | DEPRECATION | 黄色 | 弃用警告 |
-- Checking for... | CHECK | 绿色 | 检查操作 |
-- Configuring done | CONFIGURE | 绿色 | 配置完成 |
-- Generating done | GENERATE | 绿色 | 生成完成 |
| 无前缀 | MESSAGE | 默认 | 普通消息 |
CMake Debug Log | DEBUG | 蓝色 | 调试信息 |
2. 配置阶段输出
2.1 基础配置命令输出
$ cmake ..输出示例及解释:
# 1. CMake 版本信息
-- The CXX compiler identification is GNU 9.4.0
# 说明:检测到 C++ 编译器是 GCC 9.4.0
-- The C compiler identification is GNU 9.4.0
# 说明:检测到 C 编译器是 GCC 9.4.0
# 2. 编译器检查
-- Detecting CXX compiler ABI info
# 说明:正在检测 C++ 编译器的 ABI(应用程序二进制接口)信息
-- Detecting CXX compiler ABI info - done
# 说明:ABI 信息检测完成
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - works
# 说明:验证 C++ 编译器是否正常工作
-- Detecting CXX compile features
-- Detecting CXX compile features - done
# 说明:检测 C++ 编译器支持的特性
# 3. 项目信息
-- Configuring project: MyProject, version 1.0.0
# 说明:正在配置项目 MyProject,版本 1.0.0
# 4. 查找依赖
-- Found OpenCV: /usr/lib/libopencv.so (found version "4.5.1")
# 说明:找到 OpenCV 库,路径和版本信息
-- Could NOT find Boost (missing: Boost_INCLUDE_DIR)
# 说明:未找到 Boost 库,缺少 Boost_INCLUDE_DIR 变量
# 5. 选项状态
-- Build type: Release
# 说明:构建类型为 Release
-- Install prefix: /usr/local
# 说明:安装前缀为 /usr/local
-- Build tests: ON
# 说明:构建测试选项为开启
# 6. 生成构建文件
-- Configuring done
# 说明:配置阶段完成
-- Generating done
# 说明:生成构建文件完成
-- Build files have been written to: /home/user/project/build
# 说明:构建文件已写入到指定目录2.2 详细配置输出
$ cmake --debug-output ..额外输出:
-- Found Git: /usr/bin/git (found version "2.25.1")
# 说明:找到 Git 工具
-- Found Perl: /usr/bin/perl (found version "5.30.0")
# 说明:找到 Perl 解释器
-- Looking for pthread.h
-- Looking for pthread.h - found
# 说明:查找 pthread.h 头文件,已找到
-- Looking for pthread_create
-- Looking for pthread_create - not found
# 说明:查找 pthread_create 函数,未找到
-- Performing Test HAVE_CXX_ATOMICS
-- Performing Test HAVE_CXX_ATOMICS - Success
# 说明:执行 C++ 原子操作特性测试,成功3. 构建阶段输出
3.1 基本构建命令输出
$ cmake --build .输出示例及解释:
# 1. 构建工具调用
[1/5] Building CXX object CMakeFiles/myapp.dir/main.cpp.o
# 说明:正在编译 main.cpp,这是第1个任务,共5个任务
# 格式:[当前任务/总任务] 操作 目标
# 2. 编译器命令
[1/5] /usr/bin/c++ -O2 -DNDEBUG -o CMakeFiles/myapp.dir/main.cpp.o -c main.cpp
# 说明:实际执行的编译命令(详细模式)
# 3. 链接
[4/5] Linking CXX executable myapp
# 说明:正在链接生成可执行文件 myapp
# 4. 成功信息
[5/5] Completed all tasks
# 说明:所有任务完成
# 5. 生成的可执行文件
Built target myapp
# 说明:目标 myapp 构建完成3.2 详细构建输出
$ cmake --build . --verbose详细输出:
[1/5] /usr/bin/c++ -Iinclude -I/usr/include/opencv4
-O2 -DNDEBUG -o CMakeFiles/myapp.dir/main.cpp.o -c main.cpp
[2/5] /usr/bin/c++ -Iinclude -I/usr/include/opencv4
-O2 -DNDEBUG -o CMakeFiles/myapp.dir/utils.cpp.o -c utils.cpp
[3/5] cd /home/user/project/build && /usr/bin/cmake -E
cmake_link_script CMakeFiles/myapp.dir/link.txt --verbose=1
[4/5] /usr/bin/c++ -O2 -DNDEBUG CMakeFiles/myapp.dir/main.cpp.o
CMakeFiles/myapp.dir/utils.cpp.o -o myapp
-Wl,-rpath,/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libopencv_core.so
/usr/lib/x86_64-linux-gnu/libpthread.so
[5/5] Built target myapp3.3 并行构建输出
$ cmake --build . -j 4并行构建输出:
[1/5] Building CXX object CMakeFiles/myapp.dir/main.cpp.o
[2/5] Building CXX object CMakeFiles/myapp.dir/utils.cpp.o
[3/5] Building CXX object CMakeFiles/myapp.dir/network.cpp.o
[4/5] Building CXX object CMakeFiles/myapp.dir/database.cpp.o
[5/5] Linking CXX executable myapp
# 注意:多个文件同时编译,最后统一链接4. 不同命令的输出详解
4.1 cmake --help
$ cmake --help输出解释:
Usage
cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>
cmake [options] -S <path-to-source> -B <path-to-build>
# 说明:CMake 命令的基本用法
Options
-S <dir> = 指定源码目录
-B <dir> = 指定构建目录
-G <generator-name> = 指定生成器
-D <var>[:<type>]=<value> = 创建 CMake 缓存变量
# 说明:常用选项的简要说明
Generators
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files.
Visual Studio 17 2022 = Generates Visual Studio 17 2022 project files.
# 说明:可用的生成器列表
--help-command <cmd> = 显示特定命令的帮助
--help-variable <var> = 显示特定变量的帮助
--help-property <prop> = 显示特定属性的帮助
# 说明:获取更详细帮助的方法4.2 cmake --system-information
$ cmake --system-information部分输出示例:
# CMake 版本
cmake version 3.22.1
# 说明:当前 CMake 版本
# 系统信息
CMAKE_SYSTEM: Linux-5.15.0-91-generic
CMAKE_SYSTEM_NAME: Linux
CMAKE_SYSTEM_PROCESSOR: x86_64
CMAKE_SYSTEM_VERSION: 5.15.0-91-generic
# 说明:操作系统信息
# 编译器信息
CMAKE_C_COMPILER: /usr/bin/cc
CMAKE_C_COMPILER_ID: GNU
CMAKE_C_COMPILER_VERSION: 11.4.0
CMAKE_CXX_COMPILER: /usr/bin/c++
CMAKE_CXX_COMPILER_ID: GNU
CMAKE_CXX_COMPILER_VERSION: 11.4.0
# 说明:编译器路径和版本
# 路径信息
CMAKE_ROOT: /usr/share/cmake-3.22
CMAKE_COMMAND: /usr/bin/cmake
CMAKE_MAKE_PROGRAM: /usr/bin/make
# 说明:CMake 安装路径
# 缓存变量
CMAKE_BUILD_TYPE:
CMAKE_INSTALL_PREFIX: /usr/local
CMAKE_C_FLAGS:
CMAKE_CXX_FLAGS:
# 说明:当前缓存变量设置4.3 cmake -LA
$ cmake -LA输出解释:
-- Cache values
CMAKE_BUILD_TYPE:STRING=Debug
# 说明:构建类型缓存变量
CMAKE_INSTALL_PREFIX:PATH=/usr/local
# 说明:安装路径缓存变量
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
# 说明:C++ 编译器路径
BUILD_SHARED_LIBS:BOOL=ON
# 说明:共享库构建选项
USE_OPENMP:BOOL=OFF
# 说明:OpenMP 使用选项
MyProject_VERSION:STRING=1.2.3
# 说明:项目版本5. 输出级别控制
5.1 日志级别
# 错误级别(只显示错误)
$ cmake --log-level ERROR ..
# 警告级别(显示警告和错误)
$ cmake --log-level WARNING ..
# 通知级别(默认)
$ cmake --log-level NOTICE ..
# 状态级别(显示状态信息)
$ cmake --log-level STATUS ..
# 详细级别
$ cmake --log-level VERBOSE ..
# 调试级别
$ cmake --log-level DEBUG ..
# 跟踪级别(最详细)
$ cmake --log-level TRACE ..5.2 不同级别的输出对比
STATUS 级别:
-- The CXX compiler identification is GNU 9.4.0
-- Configuring done
-- Generating doneVERBOSE 级别(额外信息):
-- The CXX compiler identification is GNU 9.4.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - works
-- Configuring done
-- Generating doneDEBUG 级别(更详细信息):
-- The CXX compiler identification is GNU 9.4.0
-- Detecting CXX compiler ABI info
/usr/bin/c++ CMakeFiles/CMakeTmp/CMakeCXXCompilerABI.cpp -o CMakeFiles/CMakeTmp/cmTC_abcd
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
/usr/bin/c++ CMakeFiles/CMakeTmp/testCXXCompiler.cxx -o CMakeFiles/CMakeTmp/cmTC_abcd
-- Check for working CXX compiler: /usr/bin/c++ - works
-- Configuring done
-- Generating done5.3 静默模式
# 最小输出
$ cmake --quiet ..
# 或
$ cmake .. > /dev/null 2>&16. 常见输出信息解读
6.1 编译器检测信息
-- The CXX compiler identification is GNU 9.4.0含义:检测到的 C++ 编译器是 GNU 9.4.0
-- The C compiler identification is Clang 12.0.0含义:检测到的 C 编译器是 Clang 12.0.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - works含义:验证 C++ 编译器可以正常工作
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done含义:检测编译器的 ABI 信息,用于确定二进制兼容性
6.2 查找包信息
-- Found OpenCV: /usr/lib/x86_64-linux-gnu/libopencv_core.so (found version "4.5.1")含义:成功找到 OpenCV 库,版本 4.5.1,路径为 /usr/lib/...
-- Could NOT find Boost (missing: Boost_INCLUDE_DIR)含义:未找到 Boost 库,缺少 Boost_INCLUDE_DIR 变量
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")含义:找到 pkg-config 工具
-- Checking for module 'libcurl'
-- Found libcurl, version 7.68.0含义:通过 pkg-config 找到 libcurl 模块
6.3 特性检测
-- Performing Test HAVE_CXX_ATOMICS
-- Performing Test HAVE_CXX_ATOMICS - Success含义:测试 C++ 原子操作支持,成功
-- Looking for pthread.h
-- Looking for pthread.h - found含义:查找 pthread.h 头文件,已找到
-- Looking for sin in m
-- Looking for sin in m - found含义:在数学库中查找 sin 函数,已找到
6.4 配置进度
-- Configuring project: MyProject, version 1.0.0含义:开始配置项目 MyProject,版本 1.0.0
-- Configuring done含义:配置阶段完成,所有检查已完成
-- Generating done含义:生成构建文件完成
-- Build files have been written to: /home/user/build含义:构建文件已生成到指定目录
7. 错误信息解读
7.1 常见 CMake 错误
CMake Error: The source directory "/home/user/nonexistent" does not exist.原因:指定的源码目录不存在 解决:检查路径是否正确
CMake Error: CMake was unable to find a build program corresponding to "Ninja".原因:找不到指定的生成器(Ninja) 解决:安装 Ninja 或使用其他生成器
CMake Error at CMakeLists.txt:3 (add_executable):
add_executable called with incorrect number of arguments原因:CMakeLists.txt 语法错误 解决:检查命令参数数量
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.原因:某些必需的库或文件未找到 解决:安装缺失的依赖或设置正确的路径
7.2 编译器错误
CMake Error: Compiler /usr/bin/c++ does not support C++17.原因:编译器不支持 C++17 解决:升级编译器或降低 C++ 标准要求
CMake Error in CMakeLists.txt:
Target "myapp" links to target "OpenCV::OpenCV" but the target was not found.原因:链接的目标不存在 解决:确保 find_package 成功或目标名称正确
CMake Error: Failed to create test executable原因:无法创建测试可执行文件 解决:检查测试代码和链接库
7.3 详细错误示例
CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenCV (missing: OpenCV_INCLUDE_DIRS OpenCV_LIBS)
Call Stack (most recent call first):
/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.22/Modules/FindOpenCV.cmake:217 (find_package_handle_standard_args)
CMakeLists.txt:15 (find_package)分析:
- 错误位置:
FindPackageHandleStandardArgs.cmake第230行 - 错误原因:找不到 OpenCV,缺少 OpenCV_INCLUDE_DIRS 和 OpenCV_LIBS
- 调用栈:从 CMakeLists.txt 第15行的
find_package调用引发
8. 警告信息解读
8.1 常见警告
CMake Warning (dev) at CMakeLists.txt:5 (add_executable):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.含义:CMake 策略警告,建议显式设置策略 解决:添加 cmake_policy(SET CMP0042 NEW)
CMake Deprecation Warning at CMakeLists.txt:2 (cmake_minimum_required):
Compatibility with CMake < 2.8 will be removed from a future version.含义:使用了过时的 CMake 版本兼容性 解决:更新 cmake_minimum_required 到更高版本
CMake Warning: Manually-specified variables were not used by the project:
UNUSED_VARIABLE含义:命令行指定的变量未被项目使用 解决:检查变量名是否正确,或删除未使用的变量
CMake Warning: Cannot generate a safe linker search path for target myapp含义:无法生成安全的链接器搜索路径 解决:检查库依赖和 RPATH 设置
8.2 编译器警告
CMake Warning:
The compiler path "/usr/bin/c++" does not exist. The compiler may not be set correctly.含义:指定的编译器路径不存在 解决:安装编译器或修正路径
CMake Warning: ignoring export of component 'Extra' because target 'extra_lib' not found.含义:导出组件时找不到目标 解决:确保所有导出目标都已定义
9. 调试输出
9.1 启用调试模式
# 基础调试
$ cmake --debug-output ..
# 跟踪模式(最详细)
$ cmake --trace ..
# 跟踪并展开变量
$ cmake --trace-expand ..
# 只跟踪特定文件
$ cmake --trace-source=CMakeLists.txt ..
# 跟踪所有 CMake 调用
$ cmake --trace-redirect=trace.log ..9.2 调试输出示例
$ cmake --trace ..输出示例:
CMakeLists.txt(2): cmake_minimum_required(VERSION 3.10 )
CMakeLists.txt(5): project(MyProject )
/usr/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake(204): message(STATUS "The system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_PROCESSOR} = ${CMAKE_SYSTEM}")
CMakeLists.txt(8): set(CMAKE_CXX_STANDARD 17 )
CMakeLists.txt(9): set(CMAKE_CXX_STANDARD_REQUIRED ON )
CMakeLists.txt(12): option(BUILD_TESTS "Build tests" ON )
CMakeLists.txt(15): message(STATUS "Configuring project..." )
-- Configuring project...
CMakeLists.txt(18): add_executable(myapp main.cpp )
CMakeLists.txt(19): target_link_libraries(myapp PRIVATE fmt::fmt )
...9.3 调试变量值
$ cmake --trace-expand ..展开后的输出:
CMakeLists.txt(15): message(STATUS "Build type: Release" )
-- Build type: Release
CMakeLists.txt(18): add_executable(myapp main.cpp utils.cpp network.cpp )
CMakeLists.txt(19): target_link_libraries(myapp PRIVATE fmt::fmt pthread )
CMakeLists.txt(20): target_include_directories(myapp PRIVATE include /usr/include )10. 实际案例解析
10.1 案例:完整的配置输出
$ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release完整输出及解释:
# 1. 初始信息
-- The CXX compiler identification is GNU 11.4.0
# 解释:检测到 C++ 编译器是 GCC 11.4.0
-- The C compiler identification is GNU 11.4.0
# 解释:检测到 C 编译器是 GCC 11.4.0
-- Detecting CXX compiler ABI info
# 解释:正在检测 C++ 编译器 ABI 信息
-- Detecting CXX compiler ABI info - done
# 解释:ABI 信息检测完成,结果存储在 CMAKE_CXX_ABI_COMPILED 变量中
-- Check for working CXX compiler: /usr/bin/c++ - skipped
# 解释:跳过编译器工作检查(因为之前已检测过)
-- Detecting CXX compile features
# 解释:检测 C++ 编译器支持的特性
-- Detecting CXX compile features - done
# 解释:特性检测完成,结果存储在 CMAKE_CXX_COMPILE_FEATURES 中
# 2. 项目配置
-- Configuring project: MyProject, version 1.2.3
# 解释:开始配置项目 MyProject,版本 1.2.3
-- Build type: Release
# 解释:构建类型为 Release(由命令行 -DCMAKE_BUILD_TYPE=Release 设置)
-- Install prefix: /usr/local
# 解释:安装路径为 /usr/local(默认值)
# 3. 查找依赖
-- Found OpenCV: /usr/lib/x86_64-linux-gnu/libopencv_core.so (4.5.4)
# 解释:找到 OpenCV 4.5.4,位置在 /usr/lib/...
-- Found Boost: /usr/lib/x86_64-linux-gnu/libboost_system.so (1.74.0)
# 解释:找到 Boost 1.74.0
-- Found Git: /usr/bin/git (found version "2.34.1")
# 解释:找到 Git 工具,用于版本信息
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
# 解释:未找到 Doxygen,但可能不是必需的(只是警告)
# 4. 配置选项
-- Build tests: ON
# 解释:构建测试选项开启(默认或由项目设置)
-- Build examples: OFF
# 解释:构建示例选项关闭
-- Use OpenMP: ON
# 解释:启用 OpenMP 并行计算
# 5. 生成构建文件
-- Configuring done
# 解释:配置阶段完成,所有检查和设置已完成
-- Generating done
# 解释:生成构建文件完成
-- Build files have been written to: /home/user/project/build
# 解释:构建文件已生成到 /home/user/project/build 目录
# 6. 配置总结(项目自定义输出)
========================================
MyProject 1.2.3 配置完成
========================================
系统: Linux
编译器: GNU 11.4.0
构建类型: Release
安装目录: /usr/local
测试: 已启用
OpenMP: 已启用
OpenCV: 4.5.4
Boost: 1.74.0
========================================10.2 案例:构建输出
$ cmake --build build -j 4完整输出及解释:
# 1. 开始构建
[1/15] Building CXX object CMakeFiles/myapp.dir/src/main.cpp.o
# 解释:正在编译 main.cpp(第1个任务,共15个)
[2/15] Building CXX object CMakeFiles/myapp.dir/src/utils.cpp.o
# 解释:同时编译 utils.cpp(因为 -j 4 允许并行)
[3/15] Building CXX object CMakeFiles/myapp.dir/src/network.cpp.o
# 解释:同时编译 network.cpp
[4/15] Building CXX object CMakeFiles/myapp.dir/src/database.cpp.o
# 解释:同时编译 database.cpp
[5/15] Building CXX object CMakeFiles/myapp.dir/src/config.cpp.o
# 解释:编译 config.cpp
# 2. 编译警告
../src/utils.cpp:42:15: warning: unused parameter 'value' [-Wunused-parameter]
42 | void process(int value) {
| ^~~~~
# 解释:编译器警告,参数未使用(不影响构建)
# 3. 创建静态库
[8/15] Creating library symlink libmylib.so libmylib.so.1.0
# 解释:创建库的符号链接
# 4. 链接
[12/15] Linking CXX shared library libmylib.so
# 解释:链接生成共享库
[14/15] Linking CXX executable myapp
# 解释:链接生成可执行文件
# 5. 构建完成
[15/15] Completed all tasks
# 解释:所有构建任务完成
Built target myapp
# 解释:目标 myapp 构建成功
Built target mylib
# 解释:目标 mylib 构建成功
Built target tests
# 解释:目标 tests 构建成功(如果启用了测试)10.3 案例:测试输出
$ ctest输出及解释:
Test project /home/user/project/build
# 解释:测试项目路径
Start 1: MathTest
1/10 Test #1: MathTest ........................ Passed 0.02 sec
# 解释:测试 #1 MathTest 通过,用时 0.02 秒
Start 2: UtilsTest
2/10 Test #2: UtilsTest ........................ Passed 0.01 sec
Start 3: NetworkTest
3/10 Test #3: NetworkTest ....................... Passed 0.15 sec
Start 4: DatabaseTest
4/10 Test #4: DatabaseTest ......................***Failed 0.03 sec
# 解释:测试 #4 DatabaseTest 失败
Start 5: IntegrationTest
5/10 Test #5: IntegrationTest ................... Passed 0.42 sec
# ... 更多测试
100% tests passed, 1 tests failed out of 10
# 解释:10个测试中,9个通过,1个失败
Total Test time (real) = 1.23 sec
# 解释:总测试时间 1.23 秒
The following tests FAILED:
4 - DatabaseTest (Failed)
# 解释:列出失败的测试总结
理解 CMake 输出内容的关键点:
- 前缀识别:
--是状态信息,CMake Error是错误,CMake Warning是警告 - 上下文理解:注意输出中的文件路径和行号,它们指向问题位置
- 层级关系:缩进和调用栈显示问题的传播路径
- 关键信息:关注
found、missing、done、failed等关键词 - 调试技巧:使用
--trace和--debug-output获取更详细信息 - 日志级别:根据需求选择合适的日志级别
掌握这些输出信息的含义,可以快速定位和解决 CMake 构建过程中的问题。
为什么要学习LaTeX
LaTeX 是一种基于 TeX 的排版系统,由图灵奖得主 Lamport 开发,而 TeX 则是由 Knuth 最初开发,这两位都是计算机界的巨擘。当然开发者强并不是我们学习 LaTeX 的理由,LaTeX 和常见的所见即所得的 Word 文档最大的区别就是用户只需要关注写作的内容,而排版则完全交给软件自动完成。这让没有任何排版经验的普通人得以写出排版非常专业的论文或文章。
Berkeley 计算机系教授 Christos Papadimitriou 曾说过一句半开玩笑的话:
Every time I read a LaTeX document, I think, wow, this must be correct!
如何学习LaTeX
推荐的学习路线
LaTeX 的环境配置是个比较头疼的问题。如果你本地配置 LaTeX 环境出现了问题,可以考虑使用 Overleaf 这个在线 LaTeX 编辑网站。站内不仅有各种各样的 LaTeX 模版供你选择,还免去了环境配置的难题。
学习 LaTeX 最好的方式当然是写论文,不过从一门数学课入手用 LaTeX 写作业也是一个不错的选择。
其他值得推荐的入门学习资料
一份简短的安装 LaTeX 的介绍 [GitHub] 或者 TEX Live 指南(texlive-zh-cn)[PDF] 可以帮助你完成安装和环境配置过程
一份(不太)简短的 LaTeX2ε 介绍(lshort-zh-cn)[PDF] [GitHub] 是由 CTEX 开发小组翻译的,可以帮助你快速准确地入门,建议通读一遍
刘海洋的《LaTeX 入门》,可以当作工具书来阅读,有问题再查找,跳过 CTEX 套装部
本地编译LaTeX
感谢国内TUGers的卓越贡献,文档已相当成熟,请参考这篇文档:
VSCode + TeX Live
云端编译LaTeX
如果你不想在本地配置 LaTeX 环境,或者需要多人协作编辑 LaTeX 文档,可以考虑使用云端编译服务。以下是一些推荐的云端 LaTeX 编辑器:
Overleaf
Overleaf 在全球都有着广泛的用户基础,尤其在学术界和教育界。它提供了一个在线 LaTeX 编辑器,支持实时协作和版本控制,非常适合团队合作和学术论文写作。不过国内的用户可能会遇到访问速度较慢的问题,订阅制收费也较贵。
重医专属Overleaf,参考公共服务-Overleaf LaTeX协作平台
官方中国站点:https://cn.overleaf.com/
LoongTeX
2024年12月,国内团队开发的自主编译器 LoongTeX 发布了 1.0 版本。LoongTeX 是一个基于 TeX Live 的 LaTeX 编译器,支持多种语言和字符集,特别适合中文用户。它提供了一个在线编辑器,支持实时预览和协作功能。
TeXPage
TeXPage 是一个国内开发的在线 LaTeX 编辑器,提供了类似 Overleaf 的功能。它支持实时预览、版本控制和协作编辑,适合团队合作和学术论文写作。TeXPage 的界面简洁易用,适合初学者。
官方网站:https://texpage.com/