| @@ -294,6 +294,7 @@ | |||||
| 9F01BA9942D038EA8B5289A8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; | 9F01BA9942D038EA8B5289A8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; | ||||
| 9F2D3E5FC10F7C3270908E97 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ButtonDocument.h"; path = "../../Source/ComponentEditor/Documents/jucer_ButtonDocument.h"; sourceTree = "SOURCE_ROOT"; }; | 9F2D3E5FC10F7C3270908E97 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ButtonDocument.h"; path = "../../Source/ComponentEditor/Documents/jucer_ButtonDocument.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 9F959ECF8CD9B7314AE604A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_LabelHandler.h"; path = "../../Source/ComponentEditor/Components/jucer_LabelHandler.h"; sourceTree = "SOURCE_ROOT"; }; | 9F959ECF8CD9B7314AE604A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_LabelHandler.h"; path = "../../Source/ComponentEditor/Components/jucer_LabelHandler.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A081306A9E95CA114B81910F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_CompileEngineSettings.h"; path = "../../Source/LiveBuildEngine/jucer_CompileEngineSettings.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| A085174413736ACC8D7D42A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectWizard_openGL.h"; path = "../../Source/Wizards/jucer_ProjectWizard_openGL.h"; sourceTree = "SOURCE_ROOT"; }; | A085174413736ACC8D7D42A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectWizard_openGL.h"; path = "../../Source/Wizards/jucer_ProjectWizard_openGL.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A0BBBFBA13A1308B3CD725D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentLayoutPanel.h"; path = "../../Source/ComponentEditor/UI/jucer_ComponentLayoutPanel.h"; sourceTree = "SOURCE_ROOT"; }; | A0BBBFBA13A1308B3CD725D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentLayoutPanel.h"; path = "../../Source/ComponentEditor/UI/jucer_ComponentLayoutPanel.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A160AEF56553A658E6EA6A8E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainTemplate_Window.cpp"; path = "../../Source/BinaryData/Templates/jucer_MainTemplate_Window.cpp"; sourceTree = "SOURCE_ROOT"; }; | A160AEF56553A658E6EA6A8E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainTemplate_Window.cpp"; path = "../../Source/BinaryData/Templates/jucer_MainTemplate_Window.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -629,6 +630,7 @@ | |||||
| A978DFE87D9BB5EFE5B3DAAC, | A978DFE87D9BB5EFE5B3DAAC, | ||||
| D2FE76E4CF003856278343CC, | D2FE76E4CF003856278343CC, | ||||
| BA186B51EE4884CD8E3F2741, | BA186B51EE4884CD8E3F2741, | ||||
| A081306A9E95CA114B81910F, | |||||
| ADD6A3CF5D7DE55E57E8E38B, | ADD6A3CF5D7DE55E57E8E38B, | ||||
| A9954DC7F876A7006743ACB6, | A9954DC7F876A7006743ACB6, | ||||
| ADA538034910F52FDD2DC88D, | ADA538034910F52FDD2DC88D, | ||||
| @@ -1561,6 +1561,7 @@ | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineDLL.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineDLL.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineSettings.h"/> | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DiagnosticMessage.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DiagnosticMessage.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.h"/> | ||||
| @@ -2160,6 +2160,9 @@ | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"> | ||||
| <Filter>Projucer\LiveBuildEngine</Filter> | <Filter>Projucer\LiveBuildEngine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineSettings.h"> | |||||
| <Filter>Projucer\LiveBuildEngine</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"> | ||||
| <Filter>Projucer\LiveBuildEngine</Filter> | <Filter>Projucer\LiveBuildEngine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -1561,6 +1561,7 @@ | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineDLL.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineDLL.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineSettings.h"/> | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DiagnosticMessage.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DiagnosticMessage.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.h"/> | ||||
| @@ -2160,6 +2160,9 @@ | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"> | ||||
| <Filter>Projucer\LiveBuildEngine</Filter> | <Filter>Projucer\LiveBuildEngine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineSettings.h"> | |||||
| <Filter>Projucer\LiveBuildEngine</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"> | ||||
| <Filter>Projucer\LiveBuildEngine</Filter> | <Filter>Projucer\LiveBuildEngine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -1561,6 +1561,7 @@ | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineDLL.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineDLL.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineSettings.h"/> | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DiagnosticMessage.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DiagnosticMessage.h"/> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.h"/> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.h"/> | ||||
| @@ -2160,6 +2160,9 @@ | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.h"> | ||||
| <Filter>Projucer\LiveBuildEngine</Filter> | <Filter>Projucer\LiveBuildEngine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineSettings.h"> | |||||
| <Filter>Projucer\LiveBuildEngine</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"> | <ClInclude Include="..\..\Source\LiveBuildEngine\jucer_CppHelpers.h"> | ||||
| <Filter>Projucer\LiveBuildEngine</Filter> | <Filter>Projucer\LiveBuildEngine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -516,6 +516,8 @@ | |||||
| resource="0" file="Source/LiveBuildEngine/jucer_CompileEngineServer.cpp"/> | resource="0" file="Source/LiveBuildEngine/jucer_CompileEngineServer.cpp"/> | ||||
| <FILE id="RraER0" name="jucer_CompileEngineServer.h" compile="0" resource="0" | <FILE id="RraER0" name="jucer_CompileEngineServer.h" compile="0" resource="0" | ||||
| file="Source/LiveBuildEngine/jucer_CompileEngineServer.h"/> | file="Source/LiveBuildEngine/jucer_CompileEngineServer.h"/> | ||||
| <FILE id="hKqvP1" name="jucer_CompileEngineSettings.h" compile="0" | |||||
| resource="0" file="Source/LiveBuildEngine/jucer_CompileEngineSettings.h"/> | |||||
| <FILE id="YlfzAt" name="jucer_CppHelpers.h" compile="0" resource="0" | <FILE id="YlfzAt" name="jucer_CppHelpers.h" compile="0" resource="0" | ||||
| file="Source/LiveBuildEngine/jucer_CppHelpers.h"/> | file="Source/LiveBuildEngine/jucer_CppHelpers.h"/> | ||||
| <FILE id="yW3rHq" name="jucer_DiagnosticMessage.h" compile="0" resource="0" | <FILE id="yW3rHq" name="jucer_DiagnosticMessage.h" compile="0" resource="0" | ||||
| @@ -1107,11 +1107,6 @@ void ProjucerApplication::createNewPIP() | |||||
| showPIPCreatorWindow(); | showPIPCreatorWindow(); | ||||
| } | } | ||||
| void ProjucerApplication::updateNewlyOpenedProject (Project& p) | |||||
| { | |||||
| LiveBuildProjectSettings::updateNewlyOpenedProject (p); | |||||
| } | |||||
| void ProjucerApplication::askUserToOpenFile() | void ProjucerApplication::askUserToOpenFile() | ||||
| { | { | ||||
| FileChooser fc ("Open File"); | FileChooser fc ("Open File"); | ||||
| @@ -94,7 +94,6 @@ public: | |||||
| void createNewProject(); | void createNewProject(); | ||||
| void createNewProjectFromClipboard(); | void createNewProjectFromClipboard(); | ||||
| void createNewPIP(); | void createNewPIP(); | ||||
| void updateNewlyOpenedProject (Project&); | |||||
| void askUserToOpenFile(); | void askUserToOpenFile(); | ||||
| bool openFile (const File&); | bool openFile (const File&); | ||||
| bool closeAllDocuments (bool askUserToSave); | bool closeAllDocuments (bool askUserToSave); | ||||
| @@ -42,94 +42,26 @@ | |||||
| #endif | #endif | ||||
| //============================================================================== | //============================================================================== | ||||
| namespace ProjectProperties | |||||
| static File getProjucerTempFolder() noexcept | |||||
| { | { | ||||
| const Identifier liveSettingsType ("LIVE_SETTINGS"); | |||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| const Identifier liveSettingsSubtype ("OSX"); | |||||
| #elif JUCE_WINDOWS | |||||
| const Identifier liveSettingsSubtype ("WINDOWS"); | |||||
| #elif JUCE_LINUX | |||||
| const Identifier liveSettingsSubtype ("LINUX"); | |||||
| return { "~/Library/Caches/com.juce.projucer" }; | |||||
| #else | |||||
| return File::getSpecialLocation (File::tempDirectory).getChildFile ("com.juce.projucer"); | |||||
| #endif | #endif | ||||
| static ValueTree getLiveSettings (Project& project) | |||||
| { | |||||
| return project.getProjectRoot().getOrCreateChildWithName (liveSettingsType, nullptr) | |||||
| .getOrCreateChildWithName (liveSettingsSubtype, nullptr); | |||||
| } | |||||
| static ValueWithDefault getLiveSetting (Project& p, const Identifier& i, var defaultValue = var()) | |||||
| { | |||||
| auto tree = getLiveSettings (p); | |||||
| return { tree, i, p.getUndoManagerFor (tree), defaultValue }; | |||||
| } | |||||
| static ValueWithDefault getUserHeaderPathValue (Project& p) { return getLiveSetting (p, Ids::headerPath); } | |||||
| static ValueWithDefault getSystemHeaderPathValue (Project& p) { return getLiveSetting (p, Ids::systemHeaderPath); } | |||||
| static ValueWithDefault getExtraDLLsValue (Project& p) { return getLiveSetting (p, Ids::extraDLLs); } | |||||
| static ValueWithDefault getExtraCompilerFlagsValue (Project& p) { return getLiveSetting (p, Ids::extraCompilerFlags); } | |||||
| static ValueWithDefault getExtraPreprocessorDefsValue (Project& p) { return getLiveSetting (p, Ids::defines); } | |||||
| static ValueWithDefault getWindowsTargetPlatformVersionValue (Project& p) { return getLiveSetting (p, Ids::liveWindowsTargetPlatformVersion, "10.0.16299.0"); } | |||||
| static File getProjucerTempFolder() | |||||
| { | |||||
| #if JUCE_MAC | |||||
| return File ("~/Library/Caches/com.juce.projucer"); | |||||
| #else | |||||
| return File::getSpecialLocation (File::tempDirectory).getChildFile ("com.juce.projucer"); | |||||
| #endif | |||||
| } | |||||
| static File getCacheLocation (Project& project) | |||||
| { | |||||
| auto cacheFolderName = project.getProjectFilenameRootString() + "_" + project.getProjectUIDString(); | |||||
| #if JUCE_DEBUG | |||||
| cacheFolderName += "_debug"; | |||||
| #endif | |||||
| return getProjucerTempFolder() | |||||
| .getChildFile ("Intermediate Files") | |||||
| .getChildFile (cacheFolderName); | |||||
| } | |||||
| } | } | ||||
| //============================================================================== | |||||
| void LiveBuildProjectSettings::getLiveSettings (Project& project, PropertyListBuilder& props) | |||||
| static File getCacheLocationForProject (Project& project) noexcept | |||||
| { | { | ||||
| using namespace ProjectProperties; | |||||
| props.addSearchPathProperty (getUserHeaderPathValue (project), "User Header Paths", "User header search paths."); | |||||
| props.addSearchPathProperty (getSystemHeaderPathValue (project), "System header paths", "System header search paths."); | |||||
| auto cacheFolderName = project.getProjectFilenameRootString() + "_" + project.getProjectUIDString(); | |||||
| props.add (new TextPropertyComponent (getExtraPreprocessorDefsValue (project), "Preprocessor Definitions", 32768, true), | |||||
| "Extra preprocessor definitions. Use the form \"NAME1=value NAME2=value\", using whitespace or commas " | |||||
| "to separate the items - to include a space or comma in a definition, precede it with a backslash."); | |||||
| props.add (new TextPropertyComponent (getExtraCompilerFlagsValue (project), "Extra Compiler Flags", 2048, true), | |||||
| "Extra command-line flags to be passed to the compiler. This string can contain references to preprocessor" | |||||
| " definitions in the form ${NAME_OF_DEFINITION}, which will be replaced with their values."); | |||||
| props.add (new TextPropertyComponent (getExtraDLLsValue (project), "Extra Dynamic Libraries", 2048, true), | |||||
| "Extra dynamic libs that the running code may require. Use new-lines or commas to separate the items."); | |||||
| props.add (new TextPropertyComponent (getWindowsTargetPlatformVersionValue (project), "Windows Target Platform", 256, false), | |||||
| "The Windows target platform to use."); | |||||
| } | |||||
| void LiveBuildProjectSettings::updateNewlyOpenedProject (Project&) { /* placeholder */ } | |||||
| #if JUCE_DEBUG | |||||
| cacheFolderName += "_debug"; | |||||
| #endif | |||||
| bool LiveBuildProjectSettings::isBuildDisabled (Project& p) | |||||
| { | |||||
| const bool defaultBuildDisabled = true; | |||||
| return p.getStoredProperties().getBoolValue ("buildDisabled", defaultBuildDisabled); | |||||
| return getProjucerTempFolder().getChildFile ("Intermediate Files").getChildFile (cacheFolderName); | |||||
| } | } | ||||
| void LiveBuildProjectSettings::setBuildDisabled (Project& p, bool b) { p.getStoredProperties().setValue ("buildDisabled", b); } | |||||
| bool LiveBuildProjectSettings::areWarningsDisabled (Project& p) { return p.getStoredProperties().getBoolValue ("warningsDisabled"); } | |||||
| void LiveBuildProjectSettings::setWarningsDisabled (Project& p, bool b) { p.getStoredProperties().setValue ("warningsDisabled", b); } | |||||
| //============================================================================== | //============================================================================== | ||||
| class ClientIPC : public MessageHandler, | class ClientIPC : public MessageHandler, | ||||
| private InterprocessConnection, | private InterprocessConnection, | ||||
| @@ -161,26 +93,22 @@ public: | |||||
| void launchServer() | void launchServer() | ||||
| { | { | ||||
| DBG ("Client: Launching Server..."); | DBG ("Client: Launching Server..."); | ||||
| const String pipeName ("ipc_" + String::toHexString (Random().nextInt64())); | |||||
| const String command (createCommandLineForLaunchingServer (pipeName, | |||||
| owner.project.getProjectUIDString(), | |||||
| ProjectProperties::getCacheLocation (owner.project))); | |||||
| auto pipeName = "ipc_" + String::toHexString (Random().nextInt64()); | |||||
| auto command = createCommandLineForLaunchingServer (pipeName, owner.project.getProjectUIDString(), | |||||
| getCacheLocationForProject (owner.project)); | |||||
| #if RUN_CLANG_IN_CHILD_PROCESS | #if RUN_CLANG_IN_CHILD_PROCESS | ||||
| if (! childProcess.start (command)) | if (! childProcess.start (command)) | ||||
| { | |||||
| jassertfalse; | jassertfalse; | ||||
| } | |||||
| #else | #else | ||||
| server = createClangServer (command); | server = createClangServer (command); | ||||
| #endif | #endif | ||||
| bool ok = connectToPipe (pipeName, 10000); | |||||
| jassert (ok); | |||||
| if (ok) | |||||
| if (connectToPipe (pipeName, 10000)) | |||||
| MessageTypes::sendPing (*this); | MessageTypes::sendPing (*this); | ||||
| else | |||||
| jassertfalse; | |||||
| startTimer (serverKeepAliveTimeout); | startTimer (serverKeepAliveTimeout); | ||||
| } | } | ||||
| @@ -317,14 +245,14 @@ public: | |||||
| build.setSystemIncludes (getSystemIncludePaths()); | build.setSystemIncludes (getSystemIncludePaths()); | ||||
| build.setUserIncludes (getUserIncludes()); | build.setUserIncludes (getUserIncludes()); | ||||
| build.setGlobalDefs (getGlobalDefs (project)); | |||||
| build.setCompileFlags (ProjectProperties::getExtraCompilerFlagsValue (project).get().toString().trim()); | |||||
| build.setGlobalDefs (getGlobalDefs()); | |||||
| build.setCompileFlags (project.getCompileEngineSettings().getExtraCompilerFlagsString()); | |||||
| build.setExtraDLLs (getExtraDLLs()); | build.setExtraDLLs (getExtraDLLs()); | ||||
| build.setJuceModulesFolder (EnabledModuleList::findDefaultModulesFolder (project).getFullPathName()); | build.setJuceModulesFolder (EnabledModuleList::findDefaultModulesFolder (project).getFullPathName()); | ||||
| build.setUtilsCppInclude (project.getAppIncludeFile().getFullPathName()); | build.setUtilsCppInclude (project.getAppIncludeFile().getFullPathName()); | ||||
| build.setWindowsTargetPlatformVersion (ProjectProperties::getWindowsTargetPlatformVersionValue (project).get().toString()); | |||||
| build.setWindowsTargetPlatformVersion (project.getCompileEngineSettings().getWindowsTargetPlatformVersionString()); | |||||
| scanForProjectFiles (project, build); | scanForProjectFiles (project, build); | ||||
| @@ -376,15 +304,14 @@ private: | |||||
| void valueTreeParentChanged (ValueTree&) override { projectStructureChanged(); } | void valueTreeParentChanged (ValueTree&) override { projectStructureChanged(); } | ||||
| void valueTreeChildOrderChanged (ValueTree&, int, int) override {} | void valueTreeChildOrderChanged (ValueTree&, int, int) override {} | ||||
| static String getGlobalDefs (Project& proj) | |||||
| String getGlobalDefs() | |||||
| { | { | ||||
| StringArray defs; | StringArray defs; | ||||
| defs.add (ProjectProperties::getExtraPreprocessorDefsValue (proj).get().toString()); | |||||
| defs.add (project.getCompileEngineSettings().getExtraPreprocessorDefsString()); | |||||
| { | { | ||||
| auto projectDefines = proj.getPreprocessorDefs(); | |||||
| StringArray result; | |||||
| auto projectDefines = project.getPreprocessorDefs(); | |||||
| for (int i = 0; i < projectDefines.size(); ++i) | for (int i = 0; i < projectDefines.size(); ++i) | ||||
| { | { | ||||
| @@ -398,7 +325,7 @@ private: | |||||
| } | } | ||||
| } | } | ||||
| for (Project::ExporterIterator exporter (proj); exporter.next();) | |||||
| for (Project::ExporterIterator exporter (project); exporter.next();) | |||||
| if (exporter->canLaunchProject()) | if (exporter->canLaunchProject()) | ||||
| defs.add (exporter->getExporterIdentifierMacro() + "=1"); | defs.add (exporter->getExporterIdentifierMacro() + "=1"); | ||||
| @@ -422,7 +349,7 @@ private: | |||||
| if (projectItem.shouldBeCompiled()) | if (projectItem.shouldBeCompiled()) | ||||
| { | { | ||||
| const File f (projectItem.getFile()); | |||||
| auto f = projectItem.getFile(); | |||||
| if (f.exists()) | if (f.exists()) | ||||
| compileUnits.add (f); | compileUnits.add (f); | ||||
| @@ -430,7 +357,7 @@ private: | |||||
| if (projectItem.shouldBeAddedToTargetProject() && ! projectItem.shouldBeAddedToBinaryResources()) | if (projectItem.shouldBeAddedToTargetProject() && ! projectItem.shouldBeAddedToBinaryResources()) | ||||
| { | { | ||||
| const File f (projectItem.getFile()); | |||||
| auto f = projectItem.getFile(); | |||||
| if (f.exists()) | if (f.exists()) | ||||
| userFiles.add (f); | userFiles.add (f); | ||||
| @@ -455,11 +382,11 @@ private: | |||||
| { | { | ||||
| if (exporter->canLaunchProject()) | if (exporter->canLaunchProject()) | ||||
| { | { | ||||
| for (const LibraryModule* m : modules) | |||||
| for (auto* m : modules) | |||||
| { | { | ||||
| const File localModuleFolder = proj.getModules().shouldCopyModuleFilesLocally (m->moduleInfo.getID()).getValue() | |||||
| ? proj.getLocalModuleFolder (m->moduleInfo.getID()) | |||||
| : m->moduleInfo.getFolder(); | |||||
| auto localModuleFolder = proj.getModules().shouldCopyModuleFilesLocally (m->moduleInfo.getID()).getValue() | |||||
| ? proj.getLocalModuleFolder (m->moduleInfo.getID()) | |||||
| : m->moduleInfo.getFolder(); | |||||
| m->findAndAddCompiledUnits (*exporter, nullptr, compileUnits, | m->findAndAddCompiledUnits (*exporter, nullptr, compileUnits, | ||||
| @@ -477,14 +404,14 @@ private: | |||||
| for (int i = 0; ; ++i) | for (int i = 0; ; ++i) | ||||
| { | { | ||||
| const File binaryDataCpp (proj.getBinaryDataCppFile (i)); | |||||
| auto binaryDataCpp = proj.getBinaryDataCppFile (i); | |||||
| if (! binaryDataCpp.exists()) | if (! binaryDataCpp.exists()) | ||||
| break; | break; | ||||
| compileUnits.add (binaryDataCpp); | compileUnits.add (binaryDataCpp); | ||||
| } | } | ||||
| for (int i = compileUnits.size(); --i >= 0;) | |||||
| for (auto i = compileUnits.size(); --i >= 0;) | |||||
| if (compileUnits.getReference(i).hasFileExtension (".r")) | if (compileUnits.getReference(i).hasFileExtension (".r")) | ||||
| compileUnits.remove (i); | compileUnits.remove (i); | ||||
| @@ -493,14 +420,14 @@ private: | |||||
| static bool doesProjectMatchSavedHeaderState (Project& project) | static bool doesProjectMatchSavedHeaderState (Project& project) | ||||
| { | { | ||||
| ValueTree liveModules (project.getProjectRoot().getChildWithName (Ids::MODULES)); | |||||
| auto liveModules = project.getProjectRoot().getChildWithName (Ids::MODULES); | |||||
| ScopedPointer<XmlElement> xml (XmlDocument::parse (project.getFile())); | ScopedPointer<XmlElement> xml (XmlDocument::parse (project.getFile())); | ||||
| if (xml == nullptr || ! xml->hasTagName (Ids::JUCERPROJECT.toString())) | if (xml == nullptr || ! xml->hasTagName (Ids::JUCERPROJECT.toString())) | ||||
| return false; | return false; | ||||
| ValueTree diskModules (ValueTree::fromXml (*xml).getChildWithName (Ids::MODULES)); | |||||
| auto diskModules = ValueTree::fromXml (*xml).getChildWithName (Ids::MODULES); | |||||
| return liveModules.isEquivalentTo (diskModules); | return liveModules.isEquivalentTo (diskModules); | ||||
| } | } | ||||
| @@ -521,14 +448,15 @@ private: | |||||
| { | { | ||||
| StringArray paths; | StringArray paths; | ||||
| paths.add (project.getGeneratedCodeFolder().getFullPathName()); | paths.add (project.getGeneratedCodeFolder().getFullPathName()); | ||||
| paths.addArray (getSearchPathsFromString (ProjectProperties::getUserHeaderPathValue (project).get().toString())); | |||||
| paths.addArray (getSearchPathsFromString (project.getCompileEngineSettings().getUserHeaderPathString())); | |||||
| return convertSearchPathsToAbsolute (paths); | return convertSearchPathsToAbsolute (paths); | ||||
| } | } | ||||
| StringArray getSystemIncludePaths() | StringArray getSystemIncludePaths() | ||||
| { | { | ||||
| StringArray paths; | StringArray paths; | ||||
| paths.addArray (getSearchPathsFromString (ProjectProperties::getSystemHeaderPathValue (project).get().toString())); | |||||
| paths.addArray (getSearchPathsFromString (project.getCompileEngineSettings().getSystemHeaderPathString())); | |||||
| auto isVST3Host = project.getModules().isModuleEnabled ("juce_audio_processors") | auto isVST3Host = project.getModules().isModuleEnabled ("juce_audio_processors") | ||||
| && project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST3"); | && project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST3"); | ||||
| @@ -558,10 +486,10 @@ private: | |||||
| StringArray getExtraDLLs() | StringArray getExtraDLLs() | ||||
| { | { | ||||
| StringArray dlls; | |||||
| dlls.addTokens (ProjectProperties::getExtraDLLsValue (project).get().toString(), "\n\r,", StringRef()); | |||||
| auto dlls = StringArray::fromTokens (project.getCompileEngineSettings().getExtraDLLsString(), "\n\r,", {}); | |||||
| dlls.trim(); | dlls.trim(); | ||||
| dlls.removeEmptyStrings(); | dlls.removeEmptyStrings(); | ||||
| return dlls; | return dlls; | ||||
| } | } | ||||
| @@ -570,14 +498,11 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| CompileEngineChildProcess::CompileEngineChildProcess (Project& p) | CompileEngineChildProcess::CompileEngineChildProcess (Project& p) | ||||
| : project (p), | |||||
| continuousRebuild (false) | |||||
| : project (p) | |||||
| { | { | ||||
| ProjucerApplication::getApp().openDocumentManager.addListener (this); | ProjucerApplication::getApp().openDocumentManager.addListener (this); | ||||
| createProcess(); | createProcess(); | ||||
| errorList.setWarningsEnabled (! LiveBuildProjectSettings::areWarningsDisabled (project)); | |||||
| errorList.setWarningsEnabled (project.getCompileEngineSettings().areWarningsEnabled()); | |||||
| } | } | ||||
| CompileEngineChildProcess::~CompileEngineChildProcess() | CompileEngineChildProcess::~CompileEngineChildProcess() | ||||
| @@ -773,7 +698,7 @@ private: | |||||
| void timerCallback() override | void timerCallback() override | ||||
| { | { | ||||
| if (owner.continuousRebuild) | |||||
| if (owner.project.getCompileEngineSettings().isContinuousRebuildEnabled()) | |||||
| flushEditorChanges(); | flushEditorChanges(); | ||||
| else | else | ||||
| stopTimer(); | stopTimer(); | ||||
| @@ -911,11 +836,6 @@ void CompileEngineChildProcess::handlePing() | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| void CompileEngineChildProcess::setContinuousRebuild (bool b) | |||||
| { | |||||
| continuousRebuild = b; | |||||
| } | |||||
| void CompileEngineChildProcess::flushEditorChanges() | void CompileEngineChildProcess::flushEditorChanges() | ||||
| { | { | ||||
| for (Editor* ed : editors) | for (Editor* ed : editors) | ||||
| @@ -967,7 +887,7 @@ void CompileEngineChildProcess::handleHighlightCode (const SourceCodeRange& loca | |||||
| void CompileEngineChildProcess::cleanAllCachedFilesForProject (Project& p) | void CompileEngineChildProcess::cleanAllCachedFilesForProject (Project& p) | ||||
| { | { | ||||
| File cacheFolder (ProjectProperties::getCacheLocation (p)); | |||||
| File cacheFolder (getCacheLocationForProject (p)); | |||||
| if (cacheFolder.isDirectory()) | if (cacheFolder.isDirectory()) | ||||
| cacheFolder.deleteRecursively(); | cacheFolder.deleteRecursively(); | ||||
| @@ -38,33 +38,38 @@ public: | |||||
| CompileEngineChildProcess (Project&); | CompileEngineChildProcess (Project&); | ||||
| ~CompileEngineChildProcess(); | ~CompileEngineChildProcess(); | ||||
| //============================================================================== | |||||
| bool openedOk() const { return process != nullptr; } | bool openedOk() const { return process != nullptr; } | ||||
| void editorOpened (const File& file, CodeDocument& document); | void editorOpened (const File& file, CodeDocument& document); | ||||
| bool documentAboutToClose (OpenDocumentManager::Document*) override; | bool documentAboutToClose (OpenDocumentManager::Document*) override; | ||||
| //============================================================================== | |||||
| void cleanAll(); | void cleanAll(); | ||||
| void openPreview (const ClassDatabase::Class&); | void openPreview (const ClassDatabase::Class&); | ||||
| void reinstantiatePreviews(); | void reinstantiatePreviews(); | ||||
| void processActivationChanged (bool isForeground); | void processActivationChanged (bool isForeground); | ||||
| //============================================================================== | |||||
| bool canLaunchApp() const; | bool canLaunchApp() const; | ||||
| void launchApp(); | void launchApp(); | ||||
| bool canKillApp() const; | bool canKillApp() const; | ||||
| void killApp(); | void killApp(); | ||||
| bool isAppRunning() const noexcept; | bool isAppRunning() const noexcept; | ||||
| //============================================================================== | |||||
| const ClassDatabase::ClassList& getComponentList() const { return lastComponentList; } | const ClassDatabase::ClassList& getComponentList() const { return lastComponentList; } | ||||
| void setContinuousRebuild (bool continuousBuild); | |||||
| //============================================================================== | |||||
| void flushEditorChanges(); | void flushEditorChanges(); | ||||
| static void cleanAllCachedFilesForProject (Project&); | static void cleanAllCachedFilesForProject (Project&); | ||||
| //============================================================================== | |||||
| Project& project; | Project& project; | ||||
| ActivityList activityList; | ActivityList activityList; | ||||
| ErrorList errorList; | ErrorList errorList; | ||||
| //============================================================================== | |||||
| std::function<void (const String&)> crashHandler; | std::function<void (const String&)> crashHandler; | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -93,7 +98,6 @@ private: | |||||
| class ChildProcess; | class ChildProcess; | ||||
| ScopedPointer<ChildProcess> process, runningAppProcess; | ScopedPointer<ChildProcess> process, runningAppProcess; | ||||
| ClassDatabase::ClassList lastComponentList; | ClassDatabase::ClassList lastComponentList; | ||||
| bool continuousRebuild; | |||||
| struct Editor; | struct Editor; | ||||
| OwnedArray<Editor> editors; | OwnedArray<Editor> editors; | ||||
| @@ -153,16 +157,3 @@ private: | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChildProcessCache) | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChildProcessCache) | ||||
| }; | }; | ||||
| //============================================================================== | |||||
| struct LiveBuildProjectSettings | |||||
| { | |||||
| static void getLiveSettings (Project&, PropertyListBuilder&); | |||||
| static void updateNewlyOpenedProject (Project& p); | |||||
| static bool isBuildDisabled (Project&); | |||||
| static void setBuildDisabled (Project&, bool); | |||||
| static bool areWarningsDisabled (Project&); | |||||
| static void setWarningsDisabled (Project&, bool); | |||||
| }; | |||||
| @@ -0,0 +1,110 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library. | |||||
| Copyright (c) 2017 - ROLI Ltd. | |||||
| JUCE is an open source library subject to commercial or open-source | |||||
| licensing. | |||||
| By using JUCE, you agree to the terms of both the JUCE 5 End-User License | |||||
| Agreement and JUCE 5 Privacy Policy (both updated and effective as of the | |||||
| 27th April 2017). | |||||
| End User License Agreement: www.juce.com/juce-5-licence | |||||
| Privacy Policy: www.juce.com/juce-5-privacy-policy | |||||
| Or: You may also use this code under the terms of the GPL v3 (see | |||||
| www.gnu.org/licenses). | |||||
| JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||||
| EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||||
| DISCLAIMED. | |||||
| ============================================================================== | |||||
| */ | |||||
| #pragma once | |||||
| //============================================================================== | |||||
| class CompileEngineSettings | |||||
| { | |||||
| public: | |||||
| CompileEngineSettings (ValueTree& projectRoot) | |||||
| : tree (projectRoot.getOrCreateChildWithName ("LIVE_SETTINGS", nullptr) | |||||
| .getOrCreateChildWithName (getLiveSettingsSubType(), nullptr)), | |||||
| buildEnabledValue (tree, Ids::buildEnabled, nullptr, false), | |||||
| continuousRebuildEnabledValue (tree, Ids::continuousRebuildEnabled, nullptr, false), | |||||
| warningsEnabledValue (tree, Ids::warningsEnabled, nullptr, true), | |||||
| userHeaderPathValue (tree, Ids::headerPath, nullptr), | |||||
| systemHeaderPathValue (tree, Ids::systemHeaderPath, nullptr), | |||||
| extraDLLsValue (tree, Ids::extraDLLs, nullptr), | |||||
| extraCompilerFlagsValue (tree, Ids::extraCompilerFlags, nullptr), | |||||
| extraPreprocessorDefsValue (tree, Ids::defines, nullptr), | |||||
| windowsTargetPlatformValue (tree, Ids::windowsTargetPlatformVersion, nullptr, "10.0.16299.0") | |||||
| { | |||||
| } | |||||
| //============================================================================== | |||||
| void setBuildEnabled (bool enabled) noexcept { buildEnabledValue = enabled; } | |||||
| void setContinuousRebuildEnabled (bool enabled) noexcept { continuousRebuildEnabledValue = enabled; } | |||||
| void setWarningsEnabled (bool enabled) { warningsEnabledValue = enabled; } | |||||
| bool isBuildEnabled() const noexcept { return buildEnabledValue.get(); } | |||||
| bool isContinuousRebuildEnabled() const noexcept { return continuousRebuildEnabledValue.get(); } | |||||
| bool areWarningsEnabled() const noexcept { return warningsEnabledValue.get(); } | |||||
| String getUserHeaderPathString() const noexcept { return userHeaderPathValue.get(); } | |||||
| String getSystemHeaderPathString() const noexcept { return systemHeaderPathValue.get(); } | |||||
| String getExtraDLLsString() const noexcept { return extraDLLsValue.get(); } | |||||
| String getExtraCompilerFlagsString() const noexcept { return extraCompilerFlagsValue.get(); } | |||||
| String getExtraPreprocessorDefsString() const noexcept { return extraPreprocessorDefsValue.get(); } | |||||
| String getWindowsTargetPlatformVersionString() const noexcept { return windowsTargetPlatformValue.get(); } | |||||
| //============================================================================== | |||||
| void getLiveSettings (PropertyListBuilder& props) | |||||
| { | |||||
| props.addSearchPathProperty (userHeaderPathValue, "User Header Paths", "User header search paths."); | |||||
| props.addSearchPathProperty (systemHeaderPathValue, "System Header Paths", "System header search paths."); | |||||
| props.add (new TextPropertyComponent (extraPreprocessorDefsValue, "Preprocessor Definitions", 32768, true), | |||||
| "Extra preprocessor definitions. Use the form \"NAME1=value NAME2=value\", using whitespace or commas " | |||||
| "to separate the items - to include a space or comma in a definition, precede it with a backslash."); | |||||
| props.add (new TextPropertyComponent (extraCompilerFlagsValue, "Extra Compiler Flags", 2048, true), | |||||
| "Extra command-line flags to be passed to the compiler. This string can contain references to preprocessor" | |||||
| " definitions in the form ${NAME_OF_DEFINITION}, which will be replaced with their values."); | |||||
| props.add (new TextPropertyComponent (extraDLLsValue, "Extra Dynamic Libraries", 2048, true), | |||||
| "Extra dynamic libs that the running code may require. Use new-lines or commas to separate the items."); | |||||
| props.add (new TextPropertyComponent (windowsTargetPlatformValue, "Windows Target Platform", 256, false), | |||||
| "The Windows target platform to use."); | |||||
| } | |||||
| private: | |||||
| ValueTree tree; | |||||
| ValueWithDefault buildEnabledValue, continuousRebuildEnabledValue, warningsEnabledValue, userHeaderPathValue, systemHeaderPathValue, | |||||
| extraDLLsValue, extraCompilerFlagsValue, extraPreprocessorDefsValue, windowsTargetPlatformValue; | |||||
| //============================================================================== | |||||
| String getLiveSettingsSubType() const noexcept | |||||
| { | |||||
| #if JUCE_MAC | |||||
| return "OSX"; | |||||
| #elif JUCE_WINDOWS | |||||
| return "WINDOWS"; | |||||
| #elif JUCE_LINUX | |||||
| return "LINUX"; | |||||
| #endif | |||||
| // unknown platform?! | |||||
| jassertfalse; | |||||
| return {}; | |||||
| } | |||||
| //============================================================================== | |||||
| }; | |||||
| @@ -35,7 +35,7 @@ struct LiveBuildSettingsComponent : public Component | |||||
| addAndMakeVisible (&group); | addAndMakeVisible (&group); | ||||
| PropertyListBuilder props; | PropertyListBuilder props; | ||||
| LiveBuildProjectSettings::getLiveSettings (p, props); | |||||
| p.getCompileEngineSettings().getLiveSettings (props); | |||||
| group.setProperties (props); | group.setProperties (props); | ||||
| group.setName ("Live Build Settings"); | group.setName ("Live Build Settings"); | ||||
| @@ -1168,7 +1168,7 @@ void ProjectContentComponent::setBuildEnabled (bool isEnabled, bool displayError | |||||
| if (! displayError) | if (! displayError) | ||||
| lastCrashMessage = {}; | lastCrashMessage = {}; | ||||
| LiveBuildProjectSettings::setBuildDisabled (*project, ! isEnabled); | |||||
| project->getCompileEngineSettings().setBuildEnabled (isEnabled); | |||||
| killChildProcess(); | killChildProcess(); | ||||
| refreshTabsIfBuildStatusChanged(); | refreshTabsIfBuildStatusChanged(); | ||||
| @@ -1208,7 +1208,7 @@ void ProjectContentComponent::handleCrash (const String& message) | |||||
| bool ProjectContentComponent::isBuildEnabled() const | bool ProjectContentComponent::isBuildEnabled() const | ||||
| { | { | ||||
| return project != nullptr && ! LiveBuildProjectSettings::isBuildDisabled (*project) | |||||
| return project != nullptr && project->getCompileEngineSettings().isBuildEnabled() | |||||
| && CompileEngineDLL::getInstance()->isLoaded(); | && CompileEngineDLL::getInstance()->isLoaded(); | ||||
| } | } | ||||
| @@ -1222,7 +1222,7 @@ void ProjectContentComponent::refreshTabsIfBuildStatusChanged() | |||||
| bool ProjectContentComponent::areWarningsEnabled() const | bool ProjectContentComponent::areWarningsEnabled() const | ||||
| { | { | ||||
| return project != nullptr && ! LiveBuildProjectSettings::areWarningsDisabled (*project); | |||||
| return project != nullptr && project->getCompileEngineSettings().areWarningsEnabled(); | |||||
| } | } | ||||
| void ProjectContentComponent::updateWarningState() | void ProjectContentComponent::updateWarningState() | ||||
| @@ -1235,7 +1235,7 @@ void ProjectContentComponent::toggleWarnings() | |||||
| { | { | ||||
| if (project != nullptr) | if (project != nullptr) | ||||
| { | { | ||||
| LiveBuildProjectSettings::setWarningsDisabled (*project, areWarningsEnabled()); | |||||
| project->getCompileEngineSettings().setWarningsEnabled (! areWarningsEnabled()); | |||||
| updateWarningState(); | updateWarningState(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -1314,16 +1314,14 @@ void ProjectContentComponent::timerCallback() | |||||
| bool ProjectContentComponent::isContinuousRebuildEnabled() | bool ProjectContentComponent::isContinuousRebuildEnabled() | ||||
| { | { | ||||
| return getAppSettings().getGlobalProperties().getBoolValue ("continuousRebuild", true); | |||||
| return project != nullptr && project->getCompileEngineSettings().isContinuousRebuildEnabled(); | |||||
| } | } | ||||
| void ProjectContentComponent::setContinuousRebuildEnabled (bool b) | void ProjectContentComponent::setContinuousRebuildEnabled (bool b) | ||||
| { | { | ||||
| if (childProcess != nullptr) | |||||
| if (project != nullptr && childProcess != nullptr) | |||||
| { | { | ||||
| childProcess->setContinuousRebuild (b); | |||||
| getAppSettings().getGlobalProperties().setValue ("continuousRebuild", b); | |||||
| project->getCompileEngineSettings().setContinuousRebuildEnabled (b); | |||||
| ProjucerApplication::getCommandManager().commandStatusChanged(); | ProjucerApplication::getCommandManager().commandStatusChanged(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -1331,13 +1329,8 @@ void ProjectContentComponent::setContinuousRebuildEnabled (bool b) | |||||
| ReferenceCountedObjectPtr<CompileEngineChildProcess> ProjectContentComponent::getChildProcess() | ReferenceCountedObjectPtr<CompileEngineChildProcess> ProjectContentComponent::getChildProcess() | ||||
| { | { | ||||
| if (childProcess == nullptr && isBuildEnabled()) | if (childProcess == nullptr && isBuildEnabled()) | ||||
| { | |||||
| childProcess = ProjucerApplication::getApp().childProcessCache->getOrCreate (*project); | childProcess = ProjucerApplication::getApp().childProcessCache->getOrCreate (*project); | ||||
| if (childProcess != nullptr) | |||||
| childProcess->setContinuousRebuild (isContinuousRebuildEnabled()); | |||||
| } | |||||
| return childProcess; | return childProcess; | ||||
| } | } | ||||
| @@ -27,6 +27,7 @@ | |||||
| #pragma once | #pragma once | ||||
| #include "jucer_ProjectType.h" | #include "jucer_ProjectType.h" | ||||
| #include "../LiveBuildEngine/jucer_CompileEngineSettings.h" | |||||
| class ProjectExporter; | class ProjectExporter; | ||||
| class LibraryModule; | class LibraryModule; | ||||
| @@ -347,6 +348,9 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| bool shouldSendGUIBuilderAnalyticsEvent() noexcept; | bool shouldSendGUIBuilderAnalyticsEvent() noexcept; | ||||
| //============================================================================== | |||||
| CompileEngineSettings& getCompileEngineSettings() { return compileEngineSettings; } | |||||
| private: | private: | ||||
| ValueTree projectRoot { Ids::JUCERPROJECT }; | ValueTree projectRoot { Ids::JUCERPROJECT }; | ||||
| @@ -361,6 +365,9 @@ private: | |||||
| pluginAUMainTypeValue, pluginRTASCategoryValue, pluginRTASBypassDisabledValue, pluginRTASMultiMonoDisabledValue, | pluginAUMainTypeValue, pluginRTASCategoryValue, pluginRTASBypassDisabledValue, pluginRTASMultiMonoDisabledValue, | ||||
| pluginAAXIdentifierValue, pluginAAXCategoryValue, pluginAAXBypassDisabledValue, pluginAAXMultiMonoDisabledValue; | pluginAAXIdentifierValue, pluginAAXCategoryValue, pluginAAXBypassDisabledValue, pluginAAXMultiMonoDisabledValue; | ||||
| //============================================================================== | |||||
| CompileEngineSettings compileEngineSettings { projectRoot }; | |||||
| //============================================================================== | //============================================================================== | ||||
| File tempDirectory = {}; | File tempDirectory = {}; | ||||
| bool openInIDEAfterSaving = false; | bool openInIDEAfterSaving = false; | ||||
| @@ -321,6 +321,9 @@ namespace Ids | |||||
| DECLARE_ID (website); | DECLARE_ID (website); | ||||
| DECLARE_ID (mainClass); | DECLARE_ID (mainClass); | ||||
| DECLARE_ID (moduleFlags); | DECLARE_ID (moduleFlags); | ||||
| DECLARE_ID (buildEnabled); | |||||
| DECLARE_ID (continuousRebuildEnabled); | |||||
| DECLARE_ID (warningsEnabled); | |||||
| const Identifier ID ("id"); | const Identifier ID ("id"); | ||||
| const Identifier ID_uppercase ("ID"); | const Identifier ID_uppercase ("ID"); | ||||