JUCE GUI开发库
JUCE (Jules’ Utility Class Extensions)是由Raw MaterialSoftware发布的一套基于C++的跨平台应用程序框架类库(Windows, Mac,Linux)。JUCE的特殊之处在于其友好的用户界面以及强大的音频、图像处理能力。JUCE适合那些想使用干净、快捷、高层的API,而不想 把时间浪费在使用不同类库,面向不同平台上的开发者。JUCE能够胜任大型、复杂的应用程序(C++)的开发。
与其他应用程序框架类似,JUCE有众多覆盖音频、图像、XML分析、网络等方面的类。JUCE的开发者就是被JAVA的JDK所启发,然后想做出基于C++的对等物。
JUCE最突出的特点是其对音频的特殊支持。JUCE原本是作为Tracktion audiosequencer的一部分而开发的,但后来脱离出来成为了一个独立的工程。JUCE支持音频和MIDI回放,复音合成器,对多种音频格式文件 的读取。同时,JUCE还封装了诸如VST、RTAS、AU等技术的代码,能够开发各种音源、效果插件。众多音频厂商如Imageline、M-AUDIO、cycling74、KORG、Presonus、TC Group等等都是JUCE的使用者。
兼容WinXP / Win32系统的版本是 3.2.0
商业许可
许可 | 月 | 一次性 |
---|---|---|
JUCE Personal(针对收入低于5万美元收入限制的开发商或初创企业) | 免费 | 免费 |
JUCE Indie(针对收入低于50万美元限制的小型企业) | 40美元 | 800美元 |
JUCE Pro(无收入限制) | 130美元 | 2600美元 |
JUCE Educational(无收入限制)真正的教育机构 | 对费 | 免费 |
所有许可证都允许您在商业上发布应用程序,只要您不超过收入限制并支付适用的费用。一旦您的业务达到您的JUCE许可级别的收入限制,要继续分发您的应用程序,您必须升级您的JUCE许可证, 或者根据GNU General Public license v.3发布您的应用程序,这意味着您必须提供应用程序的源代码。
中文字体显示
$ vi modules/juce_graphics/native/juce_win32_Fonts.cpp
struct DefaultFontNames
{
DefaultFontNames()
{
if (juce_isRunningInWine())
{
defaultSans = "Bitstream Vera Sans";
defaultSerif = "Bitstream Vera Serif";
defaultFixed = "Bitstream Vera Sans Mono";
}
else
{
// 替换成支持中文的字体
* defaultSans = "Verdana";
* defaultSerif = "Times New Roman";
* defaultFixed = "Lucida Console";
* defaultFallback = "Tahoma"; // (contains plenty of unicode characters)
}
}
String defaultSans, defaultSerif, defaultFixed, defaultFallback;
};
去掉 SplashScreen
$ vi modules/juce_gui_basics/windows/juce_ResizableWindow.cpp
- #if !JucePlugin_Build_Standalone
- splashScreen = new JUCESplashScreen (*this);
- #endif
去掉 JUCE Version print
$ vi JUCE/modules/juce_core/system/juce_SystemStats.cpp
49 #if JUCE_DEBUG && ! JUCE_DISABLE_JUCE_VERSION_PRINTING
50 struct JuceVersionPrinter
51 {
52 ¦ ¦JuceVersionPrinter()
53 ¦ ¦{
54 ¦ ¦ ¦ ¦DBG (SystemStats::getJUCEVersion());
55 ¦ ¦}
56 };
57
58 static JuceVersionPrinter juceVersionPrinter;
59 #endif
mingw
error: 'mutex' in namespace 'std' does not name a type
error: 'thread' in namespace 'std' does not name a type
error: 'condition_variable' in namespace 'std' does not name a type
https://github.com/meganz/mingw-std-threads
cp mingw.* /usr/x86_64-w64-mingw32/include/
cp mingw.* /usr/x86_64-w64-mingw32/include/../../share/mingw-w64/include/
sed -i “s/#include
sed -i “s/#include
sed -i “s/#include
$ vi CMakeLists.txt
49 if (CMAKE_SYSTEM_NAME MATCHES "Windows")
50 ¦ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
51 ¦ ¦ ¦ message(STATUS "current platform: MINGW")
52 ¦ ¦ ¦ add_definitions(-D_WIN32_WINNT=0x0600)
53 ¦ ¦ ¦ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
54 ¦ endif()
55 endif()
以上问题没有解决??
$ ll /usr/bin/x86_64-w64-mingw32-g++*
lrwxrwxrwx 1 root root 40 6月 8 08:29 /usr/bin/x86_64-w64-mingw32-g++ -> /etc/alternatives/x86_64-w64-mingw32-g++
-rwxr-xr-x 2 root root 1066664 6月 21 2019 /usr/bin/x86_64-w64-mingw32-g++-posix
-rwxr-xr-x 2 root root 1066664 6月 21 2019 /usr/bin/x86_64-w64-mingw32-g++-win32
$ update-alternatives --display x86_64-w64-mingw32-g++
x86_64-w64-mingw32-g++ - 自动模式
最佳链接版本为 /usr/bin/x86_64-w64-mingw32-g++-win32
链接目前指向 /usr/bin/x86_64-w64-mingw32-g++-win32
链接 x86_64-w64-mingw32-g++ 指向 /usr/bin/x86_64-w64-mingw32-g++
从链接 x86_64-w64-mingw32-c++ 指向 /usr/bin/x86_64-w64-mingw32-c++
/usr/bin/x86_64-w64-mingw32-g++-posix - 优先级 30
次要 x86_64-w64-mingw32-c++:/usr/bin/x86_64-w64-mingw32-c++-posix
/usr/bin/x86_64-w64-mingw32-g++-win32 - 优先级 60
次要 x86_64-w64-mingw32-c++:/usr/bin/x86_64-w64-mingw32-c++-win32
$ sudo update-alternatives --config x86_64-w64-mingw32-g++
有 2 个候选项可用于替换 x86_64-w64-mingw32-g++ (提供 /usr/bin/x86_64-w64-mingw32-g++)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/x86_64-w64-mingw32-g++-win32 60 自动模式
1 /usr/bin/x86_64-w64-mingw32-g++-posix 30 手动模式
2 /usr/bin/x86_64-w64-mingw32-g++-win32 60 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:1
$ sudo update-alternatives --config x86_64-w64-mingw32-gcc
$ cd JUCE
$ cmake . -B cmake-build -DJUCE_BUILD_EXAMPLES=ON -DJUCE_BUILD_EXTRAS=ON -DCMAKE_TOOLCHAIN_FILE=~/mingw32_x86_64.cmake -DCMAKE_VERBOSE_MAKEFILE=ON
$ cmake --build cmake-build --target DemoRunner