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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// windows +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// boost +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// openssl +#include + +// qt +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -- cgit v1.3.1 From f4b85d0264059cbc234cfaf2bc25a1e2e8b26e74 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Fri, 24 May 2019 06:33:50 -0400 Subject: Update pch.h removed headers that were redundant or actually from MO --- src/pch.h | 3 --- 1 file changed, 3 deletions(-) (limited to 'src') diff --git a/src/pch.h b/src/pch.h index 1cedb945..e86c0da6 100644 --- a/src/pch.h +++ b/src/pch.h @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include @@ -58,7 +57,6 @@ #include #include #include -#include // openssl #include @@ -236,7 +234,6 @@ #include #include #include -#include #include #include #include -- cgit v1.3.1 From 4183e5837f6363193b1a3d7f7ed56cd9ab89ec36 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Sun, 26 May 2019 04:27:16 -0400 Subject: set use_folders, puts all cmake generated projects into a folder --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 496bd5fb..fcfb8a12 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -451,6 +451,7 @@ FIND_PACKAGE(Qt5Qml REQUIRED) FIND_PACKAGE(Qt5LinguistTools) SET(mo_translation_sources ${CMAKE_SOURCE_DIR}/src ${project_path}/uibase/src) +set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY AUTOGEN_SOURCE_GROUP autogen) set_property(GLOBAL PROPERTY AUTOMOC_SOURCE_GROUP autogen) set_property(GLOBAL PROPERTY AUTORCC_SOURCE_GROUP autogen) -- cgit v1.3.1