From e349af70b72ddc0af303bf82cfc4f0e29fe1332b Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 24 May 2019 02:19:30 -0400
Subject: put source files in specific groups so they're organized in the
visual studio project
---
src/CMakeLists.txt | 182 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 178 insertions(+), 4 deletions(-)
(limited to 'src')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 40fe2630..27dfc590 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -243,16 +243,190 @@ SET(organizer_RCS
)
-SOURCE_GROUP(Source FILES ${organizer_SRCS})
-SOURCE_GROUP(Headers FILES ${organizer_HDRS})
-SOURCE_GROUP(UI FILES ${organizer_UIS})
+source_group(src REGULAR_EXPRESSION ".*\\.(h|cpp)")
+
+set(application
+ iuserinterface
+ main
+ mainwindow
+ moapplication
+ moshortcut
+ selfupdater
+ singleinstance
+)
+
+set(browser
+ browserdialog
+ browserview
+)
+
+set(core
+ categories
+ shared/directoryentry
+ directoryrefresher
+ executableslist
+ installationmanager
+ instancemanager
+ loadmechanism
+ nexusinterface
+ nxmaccessmanager
+ organizercore
+ organizerproxy
+)
+
+set(dialogs
+ aboutdialog
+ activatemodsdialog
+ categoriesdialog
+ credentialsdialog
+ editexecutablesdialog
+ filedialogmemory
+ forcedloaddialog
+ forcedloaddialogwidget
+ listdialog
+ messagedialog
+ motddialog
+ overwriteinfodialog
+ queryoverwritedialog
+ problemsdialog
+ savetextasdialog
+ selectiondialog
+ syncoverwritedialog
+ transfersavesdialog
+ waitingonclosedialog
+)
+
+set(downloads
+ downloadlist
+ downloadlistsortproxy
+ downloadlistwidget
+ downloadmanager
+)
+
+set(locking
+ ilockedwaitingforprocess
+ lockeddialog
+ lockeddialogbase
+)
+
+set(modinfo
+ modinfo
+ modinfobackup
+ modinfodialog
+ modinfoforeign
+ modinfooverwrite
+ modinforegular
+ modinfoseparator
+ modinfowithconflictinfo
+)
+
+set(modlist
+ modlist
+ modlistsortproxy
+ modlistview
+)
+
+set(plugins
+ plugincontainer
+ pluginlist
+ pluginlistsortproxy
+ pluginlistview
+)
+
+set(previews
+ previewdialog
+ previewgenerator
+)
+
+set(profiles
+ profile
+ profileinputdialog
+ profilesdialog
+)
+
+set(resources
+ app_icon
+ version
+)
+
+set(settings
+ settings
+ settingsdialog
+)
+
+set(utilities
+ shared/appconfig
+ bbcode
+ csvbuilder
+ shared/error_report
+ eventfilter
+ helper
+ shared/leaktrace
+ persistentcookiejar
+ serverinfo
+ spawn
+ shared/stackdata
+ shared/util
+ usvfsconnector
+ shared/windows_error
+)
+
+set(widgets
+ descriptionpage
+ genericicondelegate
+ icondelegate
+ lcdnumber
+ logbuffer
+ loghighlighter
+ modflagicondelegate
+ modidlineedit
+ noeditdelegate
+ qtgroupingproxy
+ viewmarkingscrollbar
+)
+
+set(src_filters
+ application core browser dialogs downloads locking modinfo modlist plugins
+ previews profiles settings utilities widgets
+)
+
+set(root_filters resources)
+
+foreach(filter in list ${src_filters})
+ set(files)
+ foreach(d in lists ${${filter}})
+ set(files ${files} ${d}.cpp ${d}.h ${d}.rc ${d}.inc)
+ endforeach()
+
+ source_group(src\\${filter} FILES ${files})
+endforeach()
+
+foreach(filter in list ${root_filters})
+ set(files)
+ foreach(d in lists ${${filter}})
+ set(files ${files} ${d}.cpp ${d}.h ${d}.rc ${d}.inc)
+ endforeach()
+
+ source_group(${filter} FILES ${files})
+endforeach()
+
+file(GLOB_RECURSE rule_files ../vsbuild/CMakeFiles/*.rule)
+source_group(cmake FILES CMakeLists.txt ${rule_files})
+
+source_group(qt FILES
+ ${organizer_QRCS}
+ ../vsbuild/src/ModOrganizer_autogen/mocs_compilation.cpp
+ ../vsbuild/src/qrc_resources.cpp
+ ../vsbuild/src/qrc_stylesheet_resource.cpp
+ ../vsbuild/src/organizer_en.qm)
+
# MO projects
SET(dependency_project_path "${DEPENDENCIES_DIR}")
SET(default_project_path "${DEPENDENCIES_DIR}/modorganizer_super")
GET_FILENAME_COMPONENT(${default_project_path} ${default_project_path} REALPATH)
-
SET(project_path "${default_project_path}" CACHE PATH "path to the other mo projects")
+
#TODO this should not be a hardcoded path
SET(lib_path "${project_path}/../../install/libs")
--
cgit v1.3.1
From dfdea05029da0868115896af14e9f2fb2ff22eea Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 24 May 2019 02:20:57 -0400
Subject: greatly decreased the verbosity of builds always include the INSTALL
project in the solution build
---
CMakeLists.txt | 3 +++
src/CMakeLists.txt | 6 +++---
2 files changed, 6 insertions(+), 3 deletions(-)
(limited to 'src')
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3955cc75..f424dc78 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,9 @@ PROJECT(organizer)
# sets ModOrganizer as StartUp Project in Visual Studio
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" PROPERTY VS_STARTUP_PROJECT "ModOrganizer")
+set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1)
+set(CMAKE_INSTALL_MESSAGE NEVER)
+
SET(DEPENDENCIES_DIR CACHE PATH "")
# hint to find qt in dependencies path
LIST(APPEND CMAKE_PREFIX_PATH ${QT_ROOT}/lib/cmake)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 27dfc590..0d12792a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -446,7 +446,7 @@ FIND_PACKAGE(Qt5LinguistTools)
QT5_WRAP_UI(organizer_UIHDRS ${organizer_UIS})
QT5_ADD_RESOURCES(organizer_RCCPPS ${organizer_QRCS})
SET(mo_translation_sources ${CMAKE_SOURCE_DIR}/src ${project_path}/uibase/src)
-QT5_CREATE_TRANSLATION(organizer_translations_qm ${mo_translation_sources} ${CMAKE_SOURCE_DIR}/src/organizer_en.ts)
+QT5_CREATE_TRANSLATION(organizer_translations_qm ${mo_translation_sources} ${CMAKE_SOURCE_DIR}/src/organizer_en.ts OPTIONS -silent)
ADD_CUSTOM_TARGET(translations DEPENDS ${organizer_translations_qm})
INCLUDE_DIRECTORIES(${Qt5Declarative_INCLUDES})
@@ -549,11 +549,11 @@ SET(windeploy_parameters "--no-translations --plugindir qtplugins --libdir dlls
INSTALL(
CODE
"EXECUTE_PROCESS(COMMAND
- ${qt5bin}/windeployqt.exe ModOrganizer.exe --webenginewidgets --websockets ${windeploy_parameters}
+ ${qt5bin}/windeployqt.exe --verbose 0 ModOrganizer.exe --webenginewidgets --websockets ${windeploy_parameters}
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin
)
EXECUTE_PROCESS(COMMAND
- ${qt5bin}/windeployqt.exe uibase.dll ${windeploy_parameters}
+ ${qt5bin}/windeployqt.exe --verbose 0 uibase.dll ${windeploy_parameters}
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin
)
file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/bin/platforms)
--
cgit v1.3.1
From 953ab4e6f6e25b04890f7201b783c2693748af28 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 24 May 2019 03:53:31 -0400
Subject: turned autorcc on so no need for qt5_add_resources() anymore
qt5_wrap_ui() is redundant since autouic is already on generate
INSTALL.vcxproj.user to have the proper debugging settings so
ModOrganizer.exe is started from install/bin
---
CMakeLists.txt | 13 +++++++++++++
src/CMakeLists.txt | 5 ++---
2 files changed, 15 insertions(+), 3 deletions(-)
(limited to 'src')
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f424dc78..ced097e1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,3 +16,16 @@ LIST(APPEND CMAKE_PREFIX_PATH ${QT_ROOT}/lib/cmake)
LIST(APPEND CMAKE_PREFIX_PATH ${LZ4_ROOT}/dll)
ADD_SUBDIRECTORY(src)
+
+set(vcxproj_user_file "${CMAKE_CURRENT_BINARY_DIR}/INSTALL.vcxproj.user")
+if(NOT EXISTS ${vcxproj_user_file})
+ FILE(WRITE ${vcxproj_user_file}
+ "\n"
+ "\n"
+ "\n"
+ "${CMAKE_INSTALL_PREFIX}/bin\n"
+ "WindowsLocalDebugger"
+ "${CMAKE_INSTALL_PREFIX}/bin/ModOrganizer.exe\n"
+ "\n"
+ "\n")
+endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0d12792a..8d13b557 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -434,6 +434,7 @@ SET(lib_path "${project_path}/../../install/libs")
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTOUIC ON)
+SET(CMAKE_AUTORCC ON)
FIND_PACKAGE(Qt5Widgets REQUIRED)
FIND_PACKAGE(Qt5QuickWidgets REQUIRED)
FIND_PACKAGE(Qt5Quick REQUIRED)
@@ -443,8 +444,6 @@ FIND_PACKAGE(Qt5WebEngineWidgets REQUIRED)
FIND_PACKAGE(Qt5WebSockets REQUIRED)
FIND_PACKAGE(Qt5Qml REQUIRED)
FIND_PACKAGE(Qt5LinguistTools)
-QT5_WRAP_UI(organizer_UIHDRS ${organizer_UIS})
-QT5_ADD_RESOURCES(organizer_RCCPPS ${organizer_QRCS})
SET(mo_translation_sources ${CMAKE_SOURCE_DIR}/src ${project_path}/uibase/src)
QT5_CREATE_TRANSLATION(organizer_translations_qm ${mo_translation_sources} ${CMAKE_SOURCE_DIR}/src/organizer_en.ts OPTIONS -silent)
ADD_CUSTOM_TARGET(translations DEPENDS ${organizer_translations_qm})
@@ -496,7 +495,7 @@ ELSE()
SET(usvfs_name usvfs_x86)
ENDIF()
-ADD_EXECUTABLE(ModOrganizer WIN32 ${organizer_HDRS} ${organizer_SRCS} ${organizer_UIHDRS} ${organizer_RCS} ${organizer_RCCPPS} ${organizer_translations_qm})
+ADD_EXECUTABLE(ModOrganizer WIN32 ${organizer_HDRS} ${organizer_SRCS} ${organizer_RCS} ${organizer_QRCS} ${organizer_translations_qm})
TARGET_LINK_LIBRARIES(ModOrganizer
Qt5::Widgets Qt5::WinExtras Qt5::WebEngineWidgets Qt5::Quick
Qt5::Qml Qt5::QuickWidgets Qt5::Network Qt5::WebSockets
--
cgit v1.3.1
From 350e4fa97fc0a2dd3a63ad9ce1384e5ca925af9b Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 24 May 2019 04:13:18 -0400
Subject: using builtin properties for autogen source groups, everything is now
in the autogen filter
---
src/CMakeLists.txt | 36 +++++++++++-------------------------
1 file changed, 11 insertions(+), 25 deletions(-)
(limited to 'src')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8d13b557..e59842fb 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -344,11 +344,6 @@ set(profiles
profilesdialog
)
-set(resources
- app_icon
- version
-)
-
set(settings
settings
settingsdialog
@@ -390,36 +385,21 @@ set(src_filters
previews profiles settings utilities widgets
)
-set(root_filters resources)
-
foreach(filter in list ${src_filters})
set(files)
foreach(d in lists ${${filter}})
- set(files ${files} ${d}.cpp ${d}.h ${d}.rc ${d}.inc)
+ set(files ${files} ${d}.cpp ${d}.h ${d}.inc)
endforeach()
source_group(src\\${filter} FILES ${files})
endforeach()
-foreach(filter in list ${root_filters})
- set(files)
- foreach(d in lists ${${filter}})
- set(files ${files} ${d}.cpp ${d}.h ${d}.rc ${d}.inc)
- endforeach()
-
- source_group(${filter} FILES ${files})
-endforeach()
-
file(GLOB_RECURSE rule_files ../vsbuild/CMakeFiles/*.rule)
-source_group(cmake FILES CMakeLists.txt ${rule_files})
-
-source_group(qt FILES
- ${organizer_QRCS}
- ../vsbuild/src/ModOrganizer_autogen/mocs_compilation.cpp
- ../vsbuild/src/qrc_resources.cpp
- ../vsbuild/src/qrc_stylesheet_resource.cpp
- ../vsbuild/src/organizer_en.qm)
+file(GLOB qm_files ../vsbuild/src/*.qm)
+source_group(cmake FILES CMakeLists.txt)
+source_group(autogen FILES ${rule_files} ${qm_files})
+source_group(resources FILES ${organizer_RCS} ${organizer_QRCS})
# MO projects
SET(dependency_project_path "${DEPENDENCIES_DIR}")
@@ -435,6 +415,7 @@ SET(CMAKE_INCLUDE_CURRENT_DIR ON)
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTOUIC ON)
SET(CMAKE_AUTORCC ON)
+
FIND_PACKAGE(Qt5Widgets REQUIRED)
FIND_PACKAGE(Qt5QuickWidgets REQUIRED)
FIND_PACKAGE(Qt5Quick REQUIRED)
@@ -444,7 +425,12 @@ FIND_PACKAGE(Qt5WebEngineWidgets REQUIRED)
FIND_PACKAGE(Qt5WebSockets REQUIRED)
FIND_PACKAGE(Qt5Qml REQUIRED)
FIND_PACKAGE(Qt5LinguistTools)
+
SET(mo_translation_sources ${CMAKE_SOURCE_DIR}/src ${project_path}/uibase/src)
+set_property(GLOBAL PROPERTY AUTOGEN_SOURCE_GROUP autogen)
+set_property(GLOBAL PROPERTY AUTOMOC_SOURCE_GROUP autogen)
+set_property(GLOBAL PROPERTY AUTORCC_SOURCE_GROUP autogen)
+
QT5_CREATE_TRANSLATION(organizer_translations_qm ${mo_translation_sources} ${CMAKE_SOURCE_DIR}/src/organizer_en.ts OPTIONS -silent)
ADD_CUSTOM_TARGET(translations DEPENDS ${organizer_translations_qm})
--
cgit v1.3.1
From f8d319cfba8a1dfce919680ef5e4046a68ae9803 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 24 May 2019 06:25:58 -0400
Subject: added precompiled headers
---
src/CMakeLists.txt | 24 +++++
src/pch.cpp | 1 +
src/pch.h | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 282 insertions(+)
create mode 100644 src/pch.cpp
create mode 100644 src/pch.h
(limited to 'src')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e59842fb..496bd5fb 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -9,6 +9,28 @@ IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
SET(PROJ_ARCH x64)
ENDIF()
+macro(add_msvc_precompiled_header PrecompiledHeader PrecompiledSource SourcesVar HeadersVar)
+ if(MSVC)
+ get_filename_component(PrecompiledBasename ${PrecompiledHeader} NAME_WE)
+ set(PrecompiledBinary "${CMAKE_CURRENT_BINARY_DIR}/${PrecompiledBasename}.pch")
+ set(Sources ${${SourcesVar}})
+
+ set_source_files_properties(
+ ${PrecompiledSource} PROPERTIES
+ COMPILE_FLAGS "/Yc\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\""
+ OBJECT_OUTPUTS "${PrecompiledBinary}")
+
+ set_source_files_properties(
+ ${Sources} PROPERTIES
+ COMPILE_FLAGS "/Yu\"${PrecompiledHeader}\" /FI\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\""
+ OBJECT_DEPENDS "${PrecompiledBinary}")
+
+ list(APPEND ${SourcesVar} ${PrecompiledSource})
+ list(APPEND ${HeadersVar} ${PrecompiledHeader})
+ endif(MSVC)
+endmacro(add_msvc_precompiled_header)
+
+
SET(organizer_SRCS
transfersavesdialog.cpp
syncoverwritedialog.cpp
@@ -407,6 +429,8 @@ SET(default_project_path "${DEPENDENCIES_DIR}/modorganizer_super")
GET_FILENAME_COMPONENT(${default_project_path} ${default_project_path} REALPATH)
SET(project_path "${default_project_path}" CACHE PATH "path to the other mo projects")
+add_msvc_precompiled_header("pch.h" "pch.cpp" organizer_SRCS organizer_HDRS)
+
#TODO this should not be a hardcoded path
SET(lib_path "${project_path}/../../install/libs")
diff --git a/src/pch.cpp b/src/pch.cpp
new file mode 100644
index 00000000..1d9f38c5
--- /dev/null
+++ b/src/pch.cpp
@@ -0,0 +1 @@
+#include "pch.h"
diff --git a/src/pch.h b/src/pch.h
new file mode 100644
index 00000000..1cedb945
--- /dev/null
+++ b/src/pch.h
@@ -0,0 +1,257 @@
+// std
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include