目录

1. JUCE 程序的正确打开方式

JUCE 是一个跨平台 GUI 框架,主要用于音频应用、VST 插件开发等。

JUCE 项目一般通过 GUI 程序 Projucer 创建,项目根目录包含 *.jucer XML 文件,用于记录不同平台 JUCE 库文件位置,JUCE 库目录位置则在 Projucer 中配置。而其跨平台的特性主要通过 Builds 目录下针对不同编译环境的编译文件实现。常见的 JUCE 项目目录结构如下。

├── Builds
│   ├── CLion
│   │   ├── CMakeLists.txt
│   │   └── PkgInfo
│   ├── LinuxMakefile
│   │   └── Makefile
│   └── VisualStudio2019
│   ├── resources.rc
│   ├── *_App.vcxproj
│   ├── *_App.vcxproj.filters
│   └── *.sln
|   └── …………
├── JuceLibraryCode
│   ├── AppConfig.h
│   ├── include_juce_audio_basics.cpp
│   ├── include_juce_audio_basics.mm
│   ├── include_juce_audio_devices.cpp
│   ├── include_juce_audio_devices.mm
│   ├── …………
├── Source
│   ├── MainComponent.cpp
│   ├── MainComponent.h
│   └── Main.cpp
└── *.jucer

JUCE 主要支持 Visual Studio、XCode、Code::Blocks 以及 Linux Makefile。由于 CLion 主要使用 CMakeLists.txt 管理项目,新版本 JUCE 为支持 CLion,提供了从 Makefile 或 Code::Blocks 导出 CMakeLists.txt 的功能。

Projucer 提供了从项目生成、管理页面直接打开 IDE 的功能,但直接 CLion 项目会出现问题。 CLion 默认 CMakeLists.txt 位于项目根目录,因此,对于 CMakeLists.txt 位于子目录的项目,需要手动更改 CMake 项目根目录。正确的打开方式做法如下:

  1. 在 CLion 起始页面,点击 Open
  2. 进入要打开的 JUCE 项目的 Builds 子目录,打开 CLion 目录。
  3. 菜单栏,Tools | CMake | Change Project Root,选择 JUCE 项目目录即可。

2. Windows 下 Qt 的配置

主要参考这里: https://doc.qt.io/qt-5/cmake-get-started.html。

Linux 平台下 find_package(Qt5) 无需额外配置( Arch Linux 发行版),但在 Windows 下需要手动配置。除了上面链接中介绍的 CMAKE_PREFIX_PATH 等两个方法外,还可以根据 find_package()搜索顺序进行配置。

最简单的配置办法即添加 PATH,将对应的 Qt bin 目录添加到 PATH 即可,例如 C:\Qt\5.14.1\msvc2017\_64\bin

配置完毕后,可能需要根据选择的 Qt 库更换 CLion 工具链。

例如,若默认工具链为 WSL 但这里使用了 Visual Studio MSVC,在不修改默认工具链的情况下,通过 File | Settings | Build, Execution, Deployment | CMake 修改 Toolchain 选项即可。

3. 修改自动生成的 #include guard

主要参考这里: https://www.jetbrains.com/help/clion/header-guards.html。

在 C/C++ 中,因编译特性,头文件可能会被包含多次,为避免编译错误而有了 #include guard。

CLion 默认的 ${INCLUDE_GUARD}${PROJECT_NAME}_${FILE_NAME}_${EXT},定义在 Settings | Editor | Code Style | C/C++Naming Convention 选项卡的 Header Guard Style 项。如项目 A 的 b.h 文件,有

#ifndef A_B_H
#define A_B_H
// ......
#endif //A_B_H

如果要修改默认的 ${INCLUDE_GUARD}#pragma once 或其他格式,可以直接在上述位置修改,也可以在 Settings | Editor | File and Code TemplatesFile 中设置 C Header FileC++ Class Header

这里使用的模板为 Apache Velocity。例如,按照后一种做法,若要将 #include guard 修改为 Qt Creator 默认的 ${FILE_NAME}_${EXT},可以设置如下。

#set($GUARD = $NAME.toUpperCase())
#[[#ifndef]]# ${GUARD}_H
#[[#define]]# ${GUARD}_H
// ......
#[[#endif]]# // ${GUARD}_H

这样,项目 A 的 b.h 文件则为

#ifndef B_H
#define B_H
// ......
#endif // B_H