build: 改用 qmake,方便 Qt Creator 直接打开
- 新增 VoiletMark.pro(Qt 5 Widgets + C++17,VERSION 注入 VM_VERSION) - 移除 CMakeLists.txt,构建系统只保留 qmake 一份 - scripts/build.sh 改为调用 qmake + make,自动探测 Qt 安装路径 - .gitignore 补上 qmake / Qt Creator 产物(moc_*、Makefile、*.pro.user 等) - README 更新为 Qt Creator 与命令行两种构建方式
This commit is contained in:
+18
-4
@@ -1,8 +1,22 @@
|
|||||||
|
# Qt Creator / qmake 产物
|
||||||
build/
|
build/
|
||||||
build-*/
|
build-*/
|
||||||
*.user
|
Makefile
|
||||||
*.autosave
|
*.o
|
||||||
.vscode/
|
moc_*.cpp
|
||||||
.idea/
|
moc_*.h
|
||||||
|
qrc_*.cpp
|
||||||
|
ui_*.h
|
||||||
|
.qmake.stash
|
||||||
|
*_plugin_import.cpp
|
||||||
|
*.pro.user
|
||||||
|
*.pro.user.*
|
||||||
|
|
||||||
|
# 构建工具
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
CMakeLists.txt.user
|
CMakeLists.txt.user
|
||||||
|
|
||||||
|
# 编辑器
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.autosave
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
|
||||||
|
|
||||||
project(VoiletMark VERSION 0.1.0 LANGUAGES CXX)
|
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
||||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(Qt5 5.12 REQUIRED COMPONENTS Core Gui Widgets)
|
|
||||||
|
|
||||||
set(VM_SOURCES
|
|
||||||
src/main.cpp
|
|
||||||
src/MainWindow.cpp
|
|
||||||
src/MarkdownEditor.cpp
|
|
||||||
src/MarkdownHighlighter.cpp
|
|
||||||
src/ThemeManager.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(VM_HEADERS
|
|
||||||
src/MainWindow.h
|
|
||||||
src/MarkdownEditor.h
|
|
||||||
src/MarkdownHighlighter.h
|
|
||||||
src/ThemeManager.h
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(VoiletMark WIN32 MACOSX_BUNDLE ${VM_SOURCES} ${VM_HEADERS})
|
|
||||||
|
|
||||||
target_link_libraries(VoiletMark PRIVATE Qt5::Widgets)
|
|
||||||
target_compile_definitions(VoiletMark PRIVATE VM_VERSION="${PROJECT_VERSION}")
|
|
||||||
|
|
||||||
install(TARGETS VoiletMark
|
|
||||||
RUNTIME DESTINATION bin
|
|
||||||
BUNDLE DESTINATION .)
|
|
||||||
@@ -44,13 +44,23 @@
|
|||||||
|
|
||||||
## 构建
|
## 构建
|
||||||
|
|
||||||
依赖:Qt 5.12+(含 Widgets)、CMake 3.16+、支持 C++17 的编译器。
|
依赖:Qt 5.12+(含 Widgets 模块)、支持 C++17 的编译器。
|
||||||
|
|
||||||
|
### Qt Creator(推荐)
|
||||||
|
|
||||||
|
1. 用 Qt Creator 打开根目录的 `VoiletMark.pro`
|
||||||
|
2. 在 **项目 → 构建设置** 中选好本机的 Qt 5.15.2 套件(Kit)
|
||||||
|
3. `Ctrl+R` 直接运行
|
||||||
|
|
||||||
|
Qt Creator 默认走影子构建(shadow build),不会污染源码目录。
|
||||||
|
|
||||||
|
### 命令行
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \\
|
mkdir -p build && cd build
|
||||||
-DCMAKE_PREFIX_PATH="$HOME/Qt5/5.15.2/gcc_64"
|
$HOME/Qt5/5.15.2/gcc_64/bin/qmake ../VoiletMark.pro
|
||||||
cmake --build build -j"$(nproc)"
|
make -j"$(nproc)"
|
||||||
./build/VoiletMark
|
./VoiletMark
|
||||||
```
|
```
|
||||||
|
|
||||||
或者直接:
|
或者直接:
|
||||||
@@ -59,7 +69,8 @@ cmake --build build -j"$(nproc)"
|
|||||||
./scripts/build.sh
|
./scripts/build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
脚本会自动探测 `$HOME/Qt5/5.15.2/gcc_64`,也可以用 `QT_PREFIX` 环境变量指定。
|
脚本会依次查找 `command -v qmake`、`$QT_PREFIX/bin/qmake`、
|
||||||
|
`$HOME/Qt5/5.15.2/gcc_64/bin/qmake`;也可以用 `QMAKE=/path/to/qmake` 直接指定。
|
||||||
|
|
||||||
## 命令行
|
## 命令行
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
TEMPLATE = app
|
||||||
|
TARGET = VoiletMark
|
||||||
|
VERSION = 0.1.0
|
||||||
|
|
||||||
|
QT += core gui widgets
|
||||||
|
|
||||||
|
CONFIG += c++17 warn_on
|
||||||
|
|
||||||
|
# 让 main.cpp 里的 QStringLiteral(VM_VERSION) 拿到 "0.1.0"
|
||||||
|
DEFINES += VM_VERSION=\\\"$$VERSION\\\"
|
||||||
|
|
||||||
|
INCLUDEPATH += $$PWD/src
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
src/main.cpp \
|
||||||
|
src/MainWindow.cpp \
|
||||||
|
src/MarkdownEditor.cpp \
|
||||||
|
src/MarkdownHighlighter.cpp \
|
||||||
|
src/ThemeManager.cpp
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
src/MainWindow.h \
|
||||||
|
src/MarkdownEditor.h \
|
||||||
|
src/MarkdownHighlighter.h \
|
||||||
|
src/ThemeManager.h
|
||||||
+23
-8
@@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# 一键构建。可用 QT_PREFIX 指定 Qt 前缀,例如:
|
# 一键构建(qmake)。指定 Qt:
|
||||||
|
# QMAKE=$HOME/Qt5/5.15.2/gcc_64/bin/qmake ./scripts/build.sh
|
||||||
# QT_PREFIX=$HOME/Qt5/5.15.2/gcc_64 ./scripts/build.sh
|
# QT_PREFIX=$HOME/Qt5/5.15.2/gcc_64 ./scripts/build.sh
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
@@ -14,14 +15,28 @@ if [[ -z "${QT_PREFIX:-}" ]]; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmake_args=(-S "$root" -B "$root/build" -DCMAKE_BUILD_TYPE=Release)
|
qmake_bin="${QMAKE:-}"
|
||||||
if [[ -n "${QT_PREFIX:-}" ]]; then
|
if [[ -z "$qmake_bin" ]]; then
|
||||||
cmake_args+=(-DCMAKE_PREFIX_PATH="$QT_PREFIX")
|
if command -v qmake >/dev/null 2>&1; then
|
||||||
echo "使用 Qt: $QT_PREFIX"
|
qmake_bin="$(command -v qmake)"
|
||||||
|
elif [[ -n "${QT_PREFIX:-}" && -x "$QT_PREFIX/bin/qmake" ]]; then
|
||||||
|
qmake_bin="$QT_PREFIX/bin/qmake"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmake "${cmake_args[@]}"
|
if [[ -z "$qmake_bin" ]]; then
|
||||||
cmake --build "$root/build" -j"$(nproc)"
|
echo "找不到 qmake;请设置 QT_PREFIX 或 QMAKE 指向 Qt 安装目录。" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "使用 qmake: $qmake_bin"
|
||||||
|
build_dir="$root/build"
|
||||||
|
mkdir -p "$build_dir"
|
||||||
|
(
|
||||||
|
cd "$build_dir"
|
||||||
|
"$qmake_bin" "$root/VoiletMark.pro"
|
||||||
|
make -j"$(nproc)"
|
||||||
|
)
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "构建完成: $root/build/VoiletMark"
|
echo "构建完成: $build_dir/VoiletMark"
|
||||||
|
|||||||
Reference in New Issue
Block a user