mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Docs: Add new top-level docs folder
This commit is contained in:
parent
15ff62f384
commit
9f03f30ad4
9 changed files with 196 additions and 184 deletions
|
|
@ -1,7 +1,4 @@
|
||||||
# CMake Template Projects
|
# The JUCE CMake API
|
||||||
|
|
||||||
This directory contains project templates which should help you get started using JUCE's CMake
|
|
||||||
support.
|
|
||||||
|
|
||||||
## System Requirements
|
## System Requirements
|
||||||
|
|
||||||
|
|
@ -27,9 +24,7 @@ call to `find_package`.
|
||||||
Once your project is set up, you can generate a build tree for it in the normal way. To get started,
|
Once your project is set up, you can generate a build tree for it in the normal way. To get started,
|
||||||
you might invoke CMake like this, from the new directory you created.
|
you might invoke CMake like this, from the new directory you created.
|
||||||
|
|
||||||
```
|
cmake -Bbuild (-GgeneratorName) (-DJUCE_BUILD_EXTRAS=ON) (-DJUCE_BUILD_EXAMPLES=ON)
|
||||||
cmake -Bbuild (-GgeneratorName) (-DJUCE_BUILD_EXTRAS=ON) (-DJUCE_BUILD_EXAMPLES=ON)
|
|
||||||
```
|
|
||||||
|
|
||||||
This will create a build tree in a directory named 'build', using the CMakeLists in the current
|
This will create a build tree in a directory named 'build', using the CMakeLists in the current
|
||||||
working directory, using the default generator (makefiles on mac/linux, and the most recent Visual
|
working directory, using the default generator (makefiles on mac/linux, and the most recent Visual
|
||||||
|
|
@ -41,9 +36,7 @@ these options are on, so you probably won't want to include them most of the tim
|
||||||
|
|
||||||
Then, to build the project:
|
Then, to build the project:
|
||||||
|
|
||||||
```
|
cmake --build build (--target targetNameFromCMakeLists) (--config Release/Debug/...)
|
||||||
cmake --build build (--target targetNameFromCMakeLists) (--config Release/Debug/...)
|
|
||||||
```
|
|
||||||
|
|
||||||
This tells cmake to build the target named `targetNameFromCMakeLists`, in the specified
|
This tells cmake to build the target named `targetNameFromCMakeLists`, in the specified
|
||||||
configuration, using the appropriate tool. Of course, if you generated makefiles or ninja files, you
|
configuration, using the appropriate tool. Of course, if you generated makefiles or ninja files, you
|
||||||
|
|
@ -58,9 +51,7 @@ fail to run certain parts of the build, such as compiling icons and processing t
|
||||||
default, CMake will build for the same system that originally configured the project, so to enable
|
default, CMake will build for the same system that originally configured the project, so to enable
|
||||||
cross-compilation for iOS, a few extra flags must be passed to the initial CMake invocation:
|
cross-compilation for iOS, a few extra flags must be passed to the initial CMake invocation:
|
||||||
|
|
||||||
```
|
cmake -Bbuild-ios -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=9.3
|
||||||
cmake -Bbuild-ios -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=9.3
|
|
||||||
```
|
|
||||||
|
|
||||||
Here we create a build tree in the directory named 'build-ios', using the Xcode generator. The
|
Here we create a build tree in the directory named 'build-ios', using the Xcode generator. The
|
||||||
`-DCMAKE_SYSTEM_NAME=iOS` option tells CMake to enable cross-compiling for iOS. The
|
`-DCMAKE_SYSTEM_NAME=iOS` option tells CMake to enable cross-compiling for iOS. The
|
||||||
|
|
@ -70,9 +61,7 @@ despite the 'OSX' in the variable name!).
|
||||||
Once the project has generated, we can open it as normal in Xcode (look for the project file in the
|
Once the project has generated, we can open it as normal in Xcode (look for the project file in the
|
||||||
build directory). Alternatively, to build from the command-line, we could run this command:
|
build directory). Alternatively, to build from the command-line, we could run this command:
|
||||||
|
|
||||||
```
|
cmake --build build-ios --target <targetName> -- -sdk iphonesimulator
|
||||||
cmake --build build-ios --target <targetName> -- -sdk iphonesimulator
|
|
||||||
```
|
|
||||||
|
|
||||||
Here, we're building the target named `<targetName>` from the build tree in the directory
|
Here, we're building the target named `<targetName>` from the build tree in the directory
|
||||||
`build-ios`. All the arguments after `--` are ignored by CMake, and are passed through to the
|
`build-ios`. All the arguments after `--` are ignored by CMake, and are passed through to the
|
||||||
|
|
@ -83,11 +72,9 @@ require special code signing.
|
||||||
If we wanted to build for a real device, we would need to pass some extra signing details to the
|
If we wanted to build for a real device, we would need to pass some extra signing details to the
|
||||||
initial CMake configuration command:
|
initial CMake configuration command:
|
||||||
|
|
||||||
```
|
cmake -Bbuild-ios -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=9.3 \
|
||||||
cmake -Bbuild-ios -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=9.3 \
|
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="iPhone Developer"
|
||||||
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="iPhone Developer"
|
-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=<10 character id>
|
||||||
-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=<10 character id>
|
|
||||||
```
|
|
||||||
|
|
||||||
The `CODE_SIGN_IDENTITY` is the kind of certificate you want to use (iPhone Developer is appropriate
|
The `CODE_SIGN_IDENTITY` is the kind of certificate you want to use (iPhone Developer is appropriate
|
||||||
for development) and `DEVELOPMENT_TEAM` is the 10-character ID that can be found by opening the
|
for development) and `DEVELOPMENT_TEAM` is the 10-character ID that can be found by opening the
|
||||||
|
|
@ -97,29 +84,25 @@ info field.
|
||||||
When building the target, you may also need to tell Xcode that it can automatically update
|
When building the target, you may also need to tell Xcode that it can automatically update
|
||||||
provisioning profiles, which is achieved by passing the `-allowProvisioningUpdates` flag:
|
provisioning profiles, which is achieved by passing the `-allowProvisioningUpdates` flag:
|
||||||
|
|
||||||
```
|
cmake --build build-ios --target <targetName> -- -allowProvisioningUpdates
|
||||||
cmake --build build-ios --target <targetName> -- -allowProvisioningUpdates
|
|
||||||
```
|
|
||||||
|
|
||||||
### A note about compile definitions
|
### A note about compile definitions
|
||||||
|
|
||||||
Module options and plugin options that would previously have been set in the Projucer can be set on
|
Module options and plugin options that would previously have been set in the Projucer can be set on
|
||||||
a target-by-target basis in CMake, via `target_compile_definitions`. To find the options exposed by
|
a target-by-target basis in CMake, via `target_compile_definitions`. To find the options exposed by
|
||||||
a particular module, check its module header for sections with the following structure:
|
a particular module, check its module header for sections with the following structure:
|
||||||
```
|
|
||||||
/** Config: NAME_OF_KEY
|
/** Config: NAME_OF_KEY
|
||||||
Docs go here...
|
Docs go here...
|
||||||
*/
|
*/
|
||||||
#ifndef NAME_OF_KEY
|
#ifndef NAME_OF_KEY
|
||||||
#define NAME_OF_KEY ...
|
#define NAME_OF_KEY ...
|
||||||
#edif
|
#endif
|
||||||
```
|
|
||||||
|
|
||||||
To override the default config option, use the following CMake code, replacing `<value>` as
|
To override the default config option, use the following CMake code, replacing `<value>` as
|
||||||
appropriate:
|
appropriate:
|
||||||
```
|
|
||||||
target_compile_definitions(my_target PUBLIC NAME_OF_KEY=<value>)
|
target_compile_definitions(my_target PUBLIC NAME_OF_KEY=<value>)
|
||||||
```
|
|
||||||
|
|
||||||
The `JucePlugin_PreferredChannelConfig` preprocessor definition for plugins is difficult to specify
|
The `JucePlugin_PreferredChannelConfig` preprocessor definition for plugins is difficult to specify
|
||||||
in a portable way due to its use of curly braces, which may be misinterpreted in Linux/Mac builds
|
in a portable way due to its use of curly braces, which may be misinterpreted in Linux/Mac builds
|
||||||
|
|
@ -130,11 +113,9 @@ the newer buses API to specify the desired plugin inputs and outputs.
|
||||||
|
|
||||||
### `juce_add_<target>`
|
### `juce_add_<target>`
|
||||||
|
|
||||||
```
|
juce_add_gui_app(<target> [KEY value]...)
|
||||||
juce_add_gui_app(<target> [KEY value]...)
|
juce_add_console_app(<target> [KEY value]...)
|
||||||
juce_add_console_app(<target> [KEY value]...)
|
juce_add_plugin(<target> [KEY value]...)
|
||||||
juce_add_plugin(<target> [KEY value]...)
|
|
||||||
```
|
|
||||||
|
|
||||||
`juce_add_gui_app` and `juce_add_console_app` add an executable target with name `<target>`.
|
`juce_add_gui_app` and `juce_add_console_app` add an executable target with name `<target>`.
|
||||||
`juce_add_plugin` adds a 'shared code' static library target with name `<target>`, along with extra
|
`juce_add_plugin` adds a 'shared code' static library target with name `<target>`, along with extra
|
||||||
|
|
@ -447,12 +428,10 @@ attributes directly to these creation functions, rather than adding them later.
|
||||||
|
|
||||||
### `juce_add_binary_data`
|
### `juce_add_binary_data`
|
||||||
|
|
||||||
```
|
juce_add_binary_data(<name>
|
||||||
juce_add_binary_data(<name>
|
[HEADER_NAME ...]
|
||||||
[HEADER_NAME ...]
|
[NAMESPACE ...]
|
||||||
[NAMESPACE ...]
|
SOURCES ...)
|
||||||
SOURCES ...)
|
|
||||||
```
|
|
||||||
|
|
||||||
Create a static library that embeds the contents of the files passed as arguments to this function.
|
Create a static library that embeds the contents of the files passed as arguments to this function.
|
||||||
Adds a library target called `<name>` which can be linked into other targets using
|
Adds a library target called `<name>` which can be linked into other targets using
|
||||||
|
|
@ -471,18 +450,14 @@ and embedded in the resulting static library. This library can be linked as norm
|
||||||
|
|
||||||
### `juce_add_bundle_resources_directory`
|
### `juce_add_bundle_resources_directory`
|
||||||
|
|
||||||
```
|
juce_add_bundle_resources_directory(<target> <folder>)
|
||||||
juce_add_bundle_resources_directory(<target> <folder>)
|
|
||||||
```
|
|
||||||
|
|
||||||
Copy the entire directory at the location `<folder>` into an Apple bundle's resource directory, i.e.
|
Copy the entire directory at the location `<folder>` into an Apple bundle's resource directory, i.e.
|
||||||
the `Resources` directory for a macOS bundle, and the top-level directory of an iOS bundle.
|
the `Resources` directory for a macOS bundle, and the top-level directory of an iOS bundle.
|
||||||
|
|
||||||
### `juce_generate_juce_header`
|
### `juce_generate_juce_header`
|
||||||
|
|
||||||
```
|
juce_generate_juce_header(<target>)
|
||||||
juce_generate_juce_header(<target>)
|
|
||||||
```
|
|
||||||
|
|
||||||
Introspects the JUCE modules that have been linked to `<target>` and generates a `JuceHeader.h`
|
Introspects the JUCE modules that have been linked to `<target>` and generates a `JuceHeader.h`
|
||||||
which contains `#include` statements for each of the module headers. This header also contains an
|
which contains `#include` statements for each of the module headers. This header also contains an
|
||||||
|
|
@ -495,10 +470,8 @@ require them.
|
||||||
|
|
||||||
### `juce_set_<kind>_sdk_path`
|
### `juce_set_<kind>_sdk_path`
|
||||||
|
|
||||||
```
|
juce_set_aax_sdk_path(<absolute path>)
|
||||||
juce_set_aax_sdk_path(<absolute path>)
|
juce_set_vst2_sdk_path(<absolute path>)
|
||||||
juce_set_vst2_sdk_path(<absolute path>)
|
|
||||||
```
|
|
||||||
|
|
||||||
Call these functions from your CMakeLists to set up your local AAX and/or VST2 SDKs. These functions
|
Call these functions from your CMakeLists to set up your local AAX and/or VST2 SDKs. These functions
|
||||||
should be called *before* adding any targets that may depend on the AAX/VST2 SDKs (plugin
|
should be called *before* adding any targets that may depend on the AAX/VST2 SDKs (plugin
|
||||||
|
|
@ -506,10 +479,8 @@ hosts, VST2/AAX plugins etc.).
|
||||||
|
|
||||||
### `juce_add_module`
|
### `juce_add_module`
|
||||||
|
|
||||||
```
|
juce_add_module(<path to module>)
|
||||||
juce_add_module(<path to module>)
|
juce_add_modules(<names of module>...)
|
||||||
juce_add_modules(<names of module>...)
|
|
||||||
```
|
|
||||||
|
|
||||||
`juce_add_module` adds a library target for the JUCE module located at the provided path. `<path>`
|
`juce_add_module` adds a library target for the JUCE module located at the provided path. `<path>`
|
||||||
must be the path to a module directory (e.g. /Users/me/JUCE/modules/juce_core). This will add an
|
must be the path to a module directory (e.g. /Users/me/JUCE/modules/juce_core). This will add an
|
||||||
|
|
@ -534,9 +505,7 @@ CMakeLists in the `modules` directory.
|
||||||
|
|
||||||
### `juce_add_pip`
|
### `juce_add_pip`
|
||||||
|
|
||||||
```
|
juce_add_pip(<header>)
|
||||||
juce_add_pip(<header>)
|
|
||||||
```
|
|
||||||
|
|
||||||
This function parses the PIP metadata block in the provided header, and adds appropriate build
|
This function parses the PIP metadata block in the provided header, and adds appropriate build
|
||||||
targets for a console app, GUI app, or audio plugin. For audio plugin targets, it builds as many
|
targets for a console app, GUI app, or audio plugin. For audio plugin targets, it builds as many
|
||||||
|
|
@ -551,37 +520,29 @@ your target.
|
||||||
|
|
||||||
### `juce_disable_default_flags`
|
### `juce_disable_default_flags`
|
||||||
|
|
||||||
```
|
juce_disable_default_flags()
|
||||||
juce_disable_default_flags()
|
|
||||||
```
|
|
||||||
|
|
||||||
This function sets the `CMAKE_<LANG>_FLAGS_<MODE>` to empty in the current directory and below,
|
This function sets the `CMAKE_<LANG>_FLAGS_<MODE>` to empty in the current directory and below,
|
||||||
allowing alternative optimisation/debug flags to be supplied without conflicting with the
|
allowing alternative optimisation/debug flags to be supplied without conflicting with the
|
||||||
CMake-supplied defaults.
|
CMake-supplied defaults.
|
||||||
|
|
||||||
### `juce::juce_recommended_warning_flags
|
### `juce::juce_recommended_warning_flags`
|
||||||
|
|
||||||
```
|
target_link_libraries(myTarget PRIVATE juce::juce_recommended_warning_flags)
|
||||||
target_link_libraries(myTarget PRIVATE juce::juce_recommended_warning_flags)
|
|
||||||
```
|
|
||||||
|
|
||||||
This is a target which can be linked to other targets using `target_link_libraries`, in order to
|
This is a target which can be linked to other targets using `target_link_libraries`, in order to
|
||||||
enable the recommended JUCE warnings when building them.
|
enable the recommended JUCE warnings when building them.
|
||||||
|
|
||||||
### `juce::juce_recommended_config_flags
|
### `juce::juce_recommended_config_flags`
|
||||||
|
|
||||||
```
|
target_link_libraries(myTarget PRIVATE juce::juce_recommended_config_flags)
|
||||||
target_link_libraries(myTarget PRIVATE juce::juce_recommended_config_flags)
|
|
||||||
```
|
|
||||||
|
|
||||||
This is a target which can be linked to other targets using `target_link_libraries`, in order to
|
This is a target which can be linked to other targets using `target_link_libraries`, in order to
|
||||||
enable the recommended JUCE optimisation and debug flags.
|
enable the recommended JUCE optimisation and debug flags.
|
||||||
|
|
||||||
### `juce::juce_recommended_lto_flags
|
### `juce::juce_recommended_lto_flags`
|
||||||
|
|
||||||
```
|
target_link_libraries(myTarget PRIVATE juce::juce_recommended_lto_flags)
|
||||||
target_link_libraries(myTarget PRIVATE juce::juce_recommended_lto_flags)
|
|
||||||
```
|
|
||||||
|
|
||||||
This is a target which can be linked to other targets using `target_link_libraries`, in order to
|
This is a target which can be linked to other targets using `target_link_libraries`, in order to
|
||||||
enable the recommended JUCE link time optimisation settings.
|
enable the recommended JUCE link time optimisation settings.
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
|
The JUCE Module Format
|
||||||
The JUCE Module Format
|
======================
|
||||||
======================
|
|
||||||
|
|
||||||
A JUCE module is a collection of header and source files which can be added to a project
|
A JUCE module is a collection of header and source files which can be added to a project
|
||||||
to provide a set of classes and libraries or related functionality.
|
to provide a set of classes and libraries or related functionality.
|
||||||
|
|
@ -10,15 +9,15 @@ user projects on many platforms, either via automated tools, or by manual inclus
|
||||||
|
|
||||||
Each module may have dependencies on other modules, but should be otherwise self-contained.
|
Each module may have dependencies on other modules, but should be otherwise self-contained.
|
||||||
|
|
||||||
File structure
|
File structure
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Each module lives inside a folder whose name is the same as the name of the module. The
|
Each module lives inside a folder whose name is the same as the name of the module. The
|
||||||
JUCE convention for naming modules is lower-case with underscores, e.g.
|
JUCE convention for naming modules is lower-case with underscores, e.g.
|
||||||
|
|
||||||
juce_core
|
juce_core
|
||||||
juce_events
|
juce_events
|
||||||
juce_graphics
|
juce_graphics
|
||||||
|
|
||||||
But any name that is a valid C++ identifer is OK.
|
But any name that is a valid C++ identifer is OK.
|
||||||
|
|
||||||
|
|
@ -34,7 +33,7 @@ In this root folder there must be ONE master header file, which includes all the
|
||||||
header files for the module. This header must have the same name as the module, with
|
header files for the module. This header must have the same name as the module, with
|
||||||
a .h/.hpp/.hxx suffix. E.g.
|
a .h/.hpp/.hxx suffix. E.g.
|
||||||
|
|
||||||
juce_core/juce_core.h
|
juce_core/juce_core.h
|
||||||
|
|
||||||
IMPORTANT! All code within a module that includes other files from within its own subfolders
|
IMPORTANT! All code within a module that includes other files from within its own subfolders
|
||||||
must do so using RELATIVE paths!
|
must do so using RELATIVE paths!
|
||||||
|
|
@ -73,17 +72,18 @@ a number or other suffix if there is more than one.
|
||||||
In order to specify that a source file should only be compiled on a specific platform,
|
In order to specify that a source file should only be compiled on a specific platform,
|
||||||
then the filename can be suffixed with one of the following strings:
|
then the filename can be suffixed with one of the following strings:
|
||||||
|
|
||||||
_OSX
|
_OSX
|
||||||
_Windows
|
_Windows
|
||||||
_Linux
|
_Linux
|
||||||
_Android
|
_Android
|
||||||
_iOS
|
_iOS
|
||||||
|
|
||||||
e.g.
|
e.g.
|
||||||
juce_mymodule/juce_mymodule_1.cpp <- compiled on all platforms
|
|
||||||
juce_mymodule/juce_mymodule_2.cpp <- compiled on all platforms
|
juce_mymodule/juce_mymodule_1.cpp <- compiled on all platforms
|
||||||
juce_mymodule/juce_mymodule_OSX.cpp <- compiled only on OSX
|
juce_mymodule/juce_mymodule_2.cpp <- compiled on all platforms
|
||||||
juce_mymodule/juce_mymodule_Windows.cpp <- compiled only on Windows
|
juce_mymodule/juce_mymodule_OSX.cpp <- compiled only on OSX
|
||||||
|
juce_mymodule/juce_mymodule_Windows.cpp <- compiled only on Windows
|
||||||
|
|
||||||
Often this isn't necessary, as in most cases you can easily add checks inside the files
|
Often this isn't necessary, as in most cases you can easily add checks inside the files
|
||||||
to do different things depending on the platform, but this may be handy just to avoid
|
to do different things depending on the platform, but this may be handy just to avoid
|
||||||
|
|
@ -103,33 +103,33 @@ placed in these directories can be linked with projects via the OSXLibs, iOSLibs
|
||||||
windowsLibs, linuxLibs and mingwLibs keywords in the module declaration (see the following
|
windowsLibs, linuxLibs and mingwLibs keywords in the module declaration (see the following
|
||||||
section).
|
section).
|
||||||
|
|
||||||
OS X:
|
- OS X
|
||||||
libs/MacOSX/{arch}, where {arch} is the architecture you are targeting in Xcode ("x86_64" or
|
- libs/MacOSX/{arch}, where {arch} is the architecture you are targeting in Xcode ("x86_64" or
|
||||||
"i386", for example).
|
"i386", for example).
|
||||||
|
|
||||||
Visual Studio:
|
- Visual Studio
|
||||||
libs/VisualStudio{year}/{arch}/{run-time}, where {year} is the four digit year of the Visual Studio
|
- libs/VisualStudio{year}/{arch}/{run-time}, where {year} is the four digit year of the Visual Studio
|
||||||
release, arch is the target architecture in Visual Studio ("x64" or "Win32", for example), and
|
release, arch is the target architecture in Visual Studio ("x64" or "Win32", for example), and
|
||||||
{runtime} is the type of the run-time library indicated by the corresponding compiler flag
|
{runtime} is the type of the run-time library indicated by the corresponding compiler flag
|
||||||
("MD", "MDd", "MT", "MTd").
|
("MD", "MDd", "MT", "MTd").
|
||||||
|
|
||||||
Linux:
|
- Linux
|
||||||
libs/Linux/{arch}, where {arch} is the architecture you are targeting with the compiler. Some
|
- libs/Linux/{arch}, where {arch} is the architecture you are targeting with the compiler. Some
|
||||||
common examples of {arch} are "x86_64", "i386" and "armv6".
|
common examples of {arch} are "x86_64", "i386" and "armv6".
|
||||||
|
|
||||||
MinGW:
|
- MinGW
|
||||||
libs/MinGW/{arch}, where {arch} can take the same values as Linux.
|
- libs/MinGW/{arch}, where {arch} can take the same values as Linux.
|
||||||
|
|
||||||
iOS:
|
- iOS
|
||||||
libs/iOS/{arch}, where {arch} is the architecture you are targeting in Xcode ("arm64" or
|
- libs/iOS/{arch}, where {arch} is the architecture you are targeting in Xcode ("arm64" or
|
||||||
"x86_64", for example).
|
"x86_64", for example).
|
||||||
|
|
||||||
Android:
|
- Android
|
||||||
libs/Android/{arch}, where {arch} is the architecture provided by the Android Studio variable
|
- libs/Android/{arch}, where {arch} is the architecture provided by the Android Studio variable
|
||||||
"${ANDROID_ABI}" ("x86", "armeabi-v7a", "mips", for example).
|
"${ANDROID_ABI}" ("x86", "armeabi-v7a", "mips", for example).
|
||||||
|
|
||||||
The BEGIN_JUCE_MODULE_DECLARATION block
|
The BEGIN_JUCE_MODULE_DECLARATION block
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
This block of text needs to go inside the module's main header file. It should be commented-out
|
This block of text needs to go inside the module's main header file. It should be commented-out
|
||||||
and perhaps inside an #if 0 block too, but the Introjucer will just scan the whole file for the
|
and perhaps inside an #if 0 block too, but the Introjucer will just scan the whole file for the
|
||||||
|
|
@ -141,7 +141,7 @@ These should both be on a line of their own.
|
||||||
Inside the block, the parser will expect to find a list of value definitions, one-per-line, with
|
Inside the block, the parser will expect to find a list of value definitions, one-per-line, with
|
||||||
the very simple syntax
|
the very simple syntax
|
||||||
|
|
||||||
value_name: value
|
value_name: value
|
||||||
|
|
||||||
The value_name must be one of the items listed below, and is case-sensitive. Whitespace on the
|
The value_name must be one of the items listed below, and is case-sensitive. Whitespace on the
|
||||||
line is ignored. Some values are compulsory and must be supplied, but others are optional.
|
line is ignored. Some values are compulsory and must be supplied, but others are optional.
|
||||||
|
|
@ -149,55 +149,89 @@ The order in which they're declared doesn't matter.
|
||||||
|
|
||||||
Possible values:
|
Possible values:
|
||||||
|
|
||||||
ID: (Compulsory) This ID must match the name of the file and folder, e.g. juce_core.
|
- ID
|
||||||
The main reason for also including it here is as a sanity-check
|
- (Compulsory) This ID must match the name of the file and folder, e.g. juce_core.
|
||||||
vendor: (Compulsory) A unique ID for the vendor, e.g. "juce". This should be short
|
The main reason for also including it here is as a sanity-check
|
||||||
and shouldn't contain any spaces
|
|
||||||
version: (Compulsory) A version number for the module
|
|
||||||
name: (Compulsory) A short description of the module
|
|
||||||
description: (Compulsory) A longer description (but still only one line of text, please!)
|
|
||||||
|
|
||||||
dependencies: (Optional) A list (space or comma-separated) of other modules that are required by
|
- vendor
|
||||||
this one. The Introjucer can use this to auto-resolve dependencies.
|
- (Compulsory) A unique ID for the vendor, e.g. "juce". This should be short
|
||||||
website: (Optional) A URL linking to useful info about the module]
|
and shouldn't contain any spaces
|
||||||
license: (Optional) A description of the type of software license that applies
|
|
||||||
minimumCppStandard: (Optional) A number indicating the minimum C++ language standard that is required for this module.
|
- version
|
||||||
This must be just the standard number with no prefix e.g. 14 for C++14
|
- (Compulsory) A version number for the module
|
||||||
searchpaths: (Optional) A space-separated list of internal include paths, relative to the module's
|
|
||||||
parent folder, which need to be added to a project's header search path
|
- name
|
||||||
OSXFrameworks: (Optional) A list (space or comma-separated) of OSX frameworks that are needed
|
- (Compulsory) A short description of the module
|
||||||
by this module
|
|
||||||
iOSFrameworks: (Optional) Like OSXFrameworks, but for iOS targets
|
- description
|
||||||
linuxPackages: (Optional) A list (space or comma-separated) pkg-config packages that should be used to pass
|
- (Compulsory) A longer description (but still only one line of text, please!)
|
||||||
compiler (CFLAGS) and linker (LDFLAGS) flags
|
|
||||||
linuxLibs: (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in a
|
- dependencies
|
||||||
linux build (these are passed to the linker via the -l flag)
|
- (Optional) A list (space or comma-separated) of other modules that are required by
|
||||||
mingwLibs: (Optional) A list (space or comma-separated) of static libs that should be linked in a
|
this one. The Introjucer can use this to auto-resolve dependencies.
|
||||||
win32 mingw build (these are passed to the linker via the -l flag)
|
|
||||||
OSXLibs: (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in an
|
- website
|
||||||
OS X build (these are passed to the linker via the -l flag)
|
- (Optional) A URL linking to useful info about the module]
|
||||||
iOSLibs: (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in an
|
|
||||||
iOS build (these are passed to the linker via the -l flag)
|
- license
|
||||||
windowsLibs: (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in a
|
- (Optional) A description of the type of software license that applies
|
||||||
Visual Studio build (without the .lib suffixes)
|
|
||||||
|
- minimumCppStandard
|
||||||
|
- (Optional) A number indicating the minimum C++ language standard that is required for this module.
|
||||||
|
This must be just the standard number with no prefix e.g. 14 for C++14
|
||||||
|
|
||||||
|
- searchpaths
|
||||||
|
- (Optional) A space-separated list of internal include paths, relative to the module's
|
||||||
|
parent folder, which need to be added to a project's header search path
|
||||||
|
|
||||||
|
- OSXFrameworks
|
||||||
|
- (Optional) A list (space or comma-separated) of OSX frameworks that are needed
|
||||||
|
by this module
|
||||||
|
|
||||||
|
- iOSFrameworks
|
||||||
|
- (Optional) Like OSXFrameworks, but for iOS targets
|
||||||
|
|
||||||
|
- linuxPackages
|
||||||
|
- (Optional) A list (space or comma-separated) pkg-config packages that should be used to pass
|
||||||
|
compiler (CFLAGS) and linker (LDFLAGS) flags
|
||||||
|
|
||||||
|
- linuxLibs
|
||||||
|
- (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in a
|
||||||
|
linux build (these are passed to the linker via the -l flag)
|
||||||
|
|
||||||
|
- mingwLibs
|
||||||
|
- (Optional) A list (space or comma-separated) of static libs that should be linked in a
|
||||||
|
win32 mingw build (these are passed to the linker via the -l flag)
|
||||||
|
|
||||||
|
- OSXLibs
|
||||||
|
- (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in an
|
||||||
|
OS X build (these are passed to the linker via the -l flag)
|
||||||
|
|
||||||
|
- iOSLibs
|
||||||
|
- (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in an
|
||||||
|
iOS build (these are passed to the linker via the -l flag)
|
||||||
|
|
||||||
|
- windowsLibs
|
||||||
|
- (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in a
|
||||||
|
Visual Studio build (without the .lib suffixes)
|
||||||
|
|
||||||
Here's an example block:
|
Here's an example block:
|
||||||
|
|
||||||
BEGIN_JUCE_MODULE_DECLARATION
|
BEGIN_JUCE_MODULE_DECLARATION
|
||||||
|
|
||||||
ID: juce_audio_devices
|
ID: juce_audio_devices
|
||||||
vendor: juce
|
vendor: juce
|
||||||
version: 4.1.0
|
version: 4.1.0
|
||||||
name: JUCE audio and MIDI I/O device classes
|
name: JUCE audio and MIDI I/O device classes
|
||||||
description: Classes to play and record from audio and MIDI I/O devices
|
description: Classes to play and record from audio and MIDI I/O devices
|
||||||
website: http://www.juce.com/juce
|
website: http://www.juce.com/juce
|
||||||
license: GPL/Commercial
|
license: GPL/Commercial
|
||||||
|
|
||||||
dependencies: juce_audio_basics, juce_audio_formats, juce_events
|
dependencies: juce_audio_basics, juce_audio_formats, juce_events
|
||||||
OSXFrameworks: CoreAudio CoreMIDI DiscRecording
|
OSXFrameworks: CoreAudio CoreMIDI DiscRecording
|
||||||
iOSFrameworks: CoreAudio CoreMIDI AudioToolbox AVFoundation
|
iOSFrameworks: CoreAudio CoreMIDI AudioToolbox AVFoundation
|
||||||
linuxLibs: asound
|
linuxLibs: asound
|
||||||
mingwLibs: winmm
|
mingwLibs: winmm
|
||||||
|
|
||||||
END_JUCE_MODULE_DECLARATION
|
END_JUCE_MODULE_DECLARATION
|
||||||
|
|
||||||
38
docs/README.txt
Normal file
38
docs/README.txt
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
JUCE Documentation
|
||||||
|
==================
|
||||||
|
|
||||||
|
This directory contains files documenting the JUCE Module Format, and the JUCE
|
||||||
|
CMake API.
|
||||||
|
|
||||||
|
The JUCE modules themselves can be found in the `modules` subdirectory of the
|
||||||
|
JUCE repository.
|
||||||
|
|
||||||
|
CMake example projects are located in the `examples/CMake` directory.
|
||||||
|
|
||||||
|
The JUCE API itself is documented inline, but HTML docs can be generated from
|
||||||
|
the source code using the `doxygen` tool. These HTML docs can be [found
|
||||||
|
online](https://juce.com/learn/documentation), or you can generate a local copy
|
||||||
|
which can be used without an internet connection. For instructions on generating
|
||||||
|
offline docs, see below.
|
||||||
|
|
||||||
|
Generating Offline HTML Documentation
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
------------
|
||||||
|
|
||||||
|
- doxygen
|
||||||
|
- python
|
||||||
|
- make
|
||||||
|
- graphviz (to generate inheritance diagrams)
|
||||||
|
|
||||||
|
Make sure that all the dependencies can be found on your PATH.
|
||||||
|
|
||||||
|
Building
|
||||||
|
--------
|
||||||
|
|
||||||
|
- cd into the `doxygen` directory on the command line
|
||||||
|
- run `make`
|
||||||
|
|
||||||
|
Doxygen will create a new subdirectory "doc". Open doc/index.html in your browser
|
||||||
|
to access the generated HTML documentation.
|
||||||
|
|
@ -302,7 +302,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
|
||||||
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
|
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
|
||||||
# the files are not read by doxygen.
|
# the files are not read by doxygen.
|
||||||
|
|
||||||
EXTENSION_MAPPING =
|
EXTENSION_MAPPING = txt=md
|
||||||
|
|
||||||
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
|
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
|
||||||
# according to the Markdown format, which allows for more readable
|
# according to the Markdown format, which allows for more readable
|
||||||
|
|
@ -801,7 +801,9 @@ WARN_LOGFILE =
|
||||||
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
||||||
# Note: If this tag is empty the current directory is searched.
|
# Note: If this tag is empty the current directory is searched.
|
||||||
|
|
||||||
INPUT = build
|
INPUT = build \
|
||||||
|
"../JUCE Module Format.txt" \
|
||||||
|
"../CMake API.txt"
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
SHELL := /bin/bash
|
SHELL := /bin/bash
|
||||||
|
|
||||||
SOURCE_FILES := $(shell find ../modules -type f -name "juce_*.h" -or -name "juce_*.dox" | sed 's/ /\\ /g')
|
SOURCE_FILES := $(shell find ../../modules -type f -name "juce_*.h" -or -name "juce_*.dox" | sed 's/ /\\ /g')
|
||||||
|
|
||||||
.PHONEY: clean
|
.PHONEY: clean
|
||||||
|
|
||||||
|
|
@ -8,7 +8,7 @@ doc/index.html: build/juce_modules.dox Doxyfile
|
||||||
doxygen
|
doxygen
|
||||||
|
|
||||||
build/juce_modules.dox: process_source_files.py $(SOURCE_FILES)
|
build/juce_modules.dox: process_source_files.py $(SOURCE_FILES)
|
||||||
python $< ../modules build
|
python $< ../../modules build
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf build doc
|
rm -rf build doc
|
||||||
2
docs/doxygen/make.bat
Normal file
2
docs/doxygen/make.bat
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
python process_source_files.py ..\..\modules build
|
||||||
|
doxygen
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
The JUCE API Reference
|
|
||||||
======================
|
|
||||||
|
|
||||||
From here, you can generate an offline HTML version of the JUCE API Reference.
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
------------
|
|
||||||
|
|
||||||
- doxygen
|
|
||||||
- python
|
|
||||||
- graphviz (to generate inheritance diagrams)
|
|
||||||
|
|
||||||
Make sure that all the dependencies can be found on your PATH.
|
|
||||||
|
|
||||||
Building
|
|
||||||
--------
|
|
||||||
|
|
||||||
- cd into this directory on the command line
|
|
||||||
- run `make`
|
|
||||||
|
|
||||||
Doxygen will create a new subfolder "doc". Open doc/index.html in your browser
|
|
||||||
to access the generated HTML documentation.
|
|
||||||
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
python process_source_files.py ..\modules build
|
|
||||||
doxygen
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue