summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAl <gabriel.cortesi@outlook.com>2019-05-28 09:44:17 +0200
committerGitHub <noreply@github.com>2019-05-28 09:44:17 +0200
commit1e3a10c8b22ac1362b1455de6f9d9f8ba739883b (patch)
tree416ec0aef666525eb1abf46e5211b6042965a87e /src
parent6db22ef38898c4ada0dc1d54e697c3edc34ffd54 (diff)
parent42159d28ecf94acd0f9ffb3ae59674a0962fa438 (diff)
Merge pull request #732 from isanae/cmake-changes
Adds filters, precompiled headers and quietness to the Visual Studio projects
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt204
-rw-r--r--src/pch.cpp1
-rw-r--r--src/pch.h254
3 files changed, 449 insertions, 10 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 57cd2f77..cae26334 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
@@ -243,16 +265,172 @@ 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(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
+)
+
+foreach(filter in list ${src_filters})
+ set(files)
+ foreach(d in lists ${${filter}})
+ set(files ${files} ${d}.cpp ${d}.h ${d}.inc)
+ endforeach()
+
+ source_group(src\\${filter} FILES ${files})
+endforeach()
+
+file(GLOB_RECURSE rule_files ../vsbuild/CMakeFiles/*.rule)
+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}")
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")
@@ -260,6 +438,8 @@ 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)
@@ -269,10 +449,14 @@ 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)
+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)
+
+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})
@@ -322,7 +506,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
@@ -375,11 +559,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)
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..e86c0da6
--- /dev/null
+++ b/src/pch.h
@@ -0,0 +1,254 @@
+// std
+#include <algorithm>
+#include <assert.h>
+#include <bitset>
+#include <cstdarg>
+#include <cstdint>
+#include <ctime>
+#include <exception>
+#include <functional>
+#include <iomanip>
+#include <iostream>
+#include <limits.h>
+#include <list>
+#include <map>
+#include <memory>
+#include <regex>
+#include <set>
+#include <sstream>
+#include <stddef.h>
+#include <stdexcept>
+#include <string.h>
+#include <string>
+#include <tuple>
+#include <utility>
+#include <vector>
+#include <wchar.h>
+
+// windows
+#include <Windows.h>
+#include <DbgHelp.h>
+#include <eh.h>
+#include <LMCons.h>
+#include <Psapi.h>
+#include <Shellapi.h>
+#include <shlobj.h>
+#include <Shlwapi.h>
+#include <tchar.h>
+#include <wincred.h>
+
+// boost
+#include <boost/algorithm/string.hpp>
+#include <boost/algorithm/string/predicate.hpp>
+#include <boost/assign.hpp>
+#include <boost/bind.hpp>
+#include <boost/function.hpp>
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+#include <boost/fusion/container.hpp>
+#include <boost/fusion/include/at_key.hpp>
+#include <boost/fusion/include/for_each.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/ptr_container/ptr_vector.hpp>
+#include <boost/range/adaptor/reversed.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/signals2.hpp>
+#include <boost/thread.hpp>
+#include <boost/uuid/uuid_generators.hpp>
+#include <boost/uuid/uuid_io.hpp>
+
+// openssl
+#include <tlhelp32.h>
+
+// qt
+#include <QAbstractButton>
+#include <QAbstractItemDelegate>
+#include <QAbstractItemModel>
+#include <QAbstractItemView>
+#include <QAbstractProxyModel>
+#include <QAbstractTableModel>
+#include <QAction>
+#include <QApplication>
+#include <QAtomicInt>
+#include <QBuffer>
+#include <QButtonGroup>
+#include <QByteArray>
+#include <QCheckBox>
+#include <QClipboard>
+#include <QCloseEvent>
+#include <QColor>
+#include <QColorDialog>
+#include <QComboBox>
+#include <QCommandLinkButton>
+#include <QContextMenuEvent>
+#include <QCoreApplication>
+#include <QCryptographicHash>
+#include <QCursor>
+#include <QDataStream>
+#include <QDate>
+#include <QDateTime>
+#include <QDebug>
+#include <QDesktopServices>
+#include <QDesktopWidget>
+#include <QDialog>
+#include <QDialogButtonBox>
+#include <QDir>
+#include <QDirIterator>
+#include <QDragEnterEvent>
+#include <QDropEvent>
+#include <QEvent>
+#include <QFile>
+#include <QFileDialog>
+#include <QFIleIconProvider>
+#include <QFileInfo>
+#include <QFileSystemModel>
+#include <QFileSystemWatcher>
+#include <QFlags>
+#include <QFont>
+#include <QFontDatabase>
+#include <QFuture>
+#include <QFutureWatcher>
+#include <QHash>
+#include <QHBoxLayout>
+#include <QHeaderView>
+#include <QIcon>
+#include <QImageReader>
+#include <QInputDialog>
+#include <QIODevice>
+#include <QItemDelegate>
+#include <QItemSelection>
+#include <QItemSelectionModel>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QJsonObject>
+#include <QJsonValueRef>
+#include <QKeyEvent>
+#include <QLabel>
+#include <QLCDNumber>
+#include <QLibrary>
+#include <QLibraryInfo>
+#include <QLineEdit>
+#include <QList>
+#include <QListWidget>
+#include <QListWidgetItem>
+#include <QLocale>
+#include <QLocalServer>
+#include <QLocalSocket>
+#include <QMainWindow>
+#include <QMap>
+#include <QMenu>
+#include <QMessageBox>
+#include <QMetaType>
+#include <QMimeData>
+#include <QModelIndex>
+#include <QMouseEvent>
+#include <QMultiHash>
+#include <QMutex>
+#include <QMutexLocker>
+#include <QNetworkAccessManager>
+#include <QNetworkCookie>
+#include <QNetworkCookieJar>
+#include <QNetworkDiskCache>
+#include <QNetworkInterface>
+#include <QNetworkProxy>
+#include <QNetworkProxyFactory>
+#include <QNetworkReply>
+#include <QNetworkRequest>
+#include <QObject>
+#include <QPainter>
+#include <QPalette>
+#include <QPersistentModelIndex>
+#include <QPixmap>
+#include <QPixmapCache>
+#include <QPluginLoader>
+#include <QPoint>
+#include <QPointer>
+#include <QProcess>
+#include <QProgressBar>
+#include <QProgressDialog>
+#include <QProxyStyle>
+#include <QPushButton>
+#include <QQueue>
+#include <QRadioButton>
+#include <QRect>
+#include <QRegExp>
+#include <QRegExpValidator>
+#include <QRegularExpression>
+#include <QResizeEvent>
+#include <QScopedArrayPointer>
+#include <QScopedPointer>
+#include <QScrollBar>
+#include <QSet>
+#include <QSettings>
+#include <QSharedMemory>
+#include <QSharedPointer>
+#include <QShortcut>
+#include <QSignalMapper>
+#include <QSize>
+#include <QSizePolicy>
+#include <QSortFilterProxyModel>
+#include <QSpinBox>
+#include <QSplashScreen>
+#include <QSslSocket>
+#include <QStandardItemModel>
+#include <qstandardpaths.h>
+#include <QStandardPaths>
+#include <QString>
+#include <QStringList>
+#include <QStringListModel>
+#include <QStyle>
+#include <QStyledItemDelegate>
+#include <QStyleFactory>
+#include <QStyleOption>
+#include <QStyleOptionSlider>
+#include <QSyntaxHighlighter>
+#include <Qt>
+#include <QTableWidget>
+#include <QTabWidget>
+#include <QtAlgorithms>
+#include <QtConcurrent/QtConcurrentRun>
+#include <QtCore/QAbstractItemModel>
+#include <QtCore/QObject>
+#include <QtCore/QStack>
+#include <QtDebug>
+#include <QTemporaryFile>
+#include <QTextBrowser>
+#include <QTextCodec>
+#include <QTextDocument>
+#include <QTextEdit>
+#include <QTextStream>
+#include <QtGlobal>
+#include <QtGui/QtGui>
+#include <QThread>
+#include <QTime>
+#include <QTimer>
+#include <QToolBar>
+#include <QToolButton>
+#include <QToolTip>
+#include <QtPlatformHeaders/QWindowsWindowFunctions>
+#include <QtPlugin>
+#include <QTranslator>
+#include <QTreeView>
+#include <QTreeWidget>
+#include <QTreeWidgetItem>
+#include <QTreeWidgetItemIterator>
+#include <QtTest/QtTest>
+#include <QUrl>
+#include <QUrlQuery>
+#include <QVariant>
+#include <QVariantList>
+#include <QVariantMap>
+#include <QVector>
+#include <QVersionNumber>
+#include <QWebEngineContextMenuData>
+#include <QWebEngineHistory>
+#include <QWebEnginePage>
+#include <QWebEngineProfile>
+#include <QWebEngineSettings>
+#include <QWebEngineView>
+#include <QWebSocket>
+#include <QWhatsThis>
+#include <QWhatsThisClickedEvent>
+#include <QWidget>
+#include <QWidgetAction>