diff options
| author | Al <gabriel.cortesi@outlook.com> | 2019-05-28 09:44:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-05-28 09:44:17 +0200 |
| commit | 1e3a10c8b22ac1362b1455de6f9d9f8ba739883b (patch) | |
| tree | 416ec0aef666525eb1abf46e5211b6042965a87e /src | |
| parent | 6db22ef38898c4ada0dc1d54e697c3edc34ffd54 (diff) | |
| parent | 42159d28ecf94acd0f9ffb3ae59674a0962fa438 (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.txt | 204 | ||||
| -rw-r--r-- | src/pch.cpp | 1 | ||||
| -rw-r--r-- | src/pch.h | 254 |
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> |
