From 412b72d8d6de61a77f2b84851b2743c0e89264db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Reitb=C3=B6ck?= Date: Sat, 13 Sep 2025 17:27:21 +0200 Subject: [PATCH] Start: use CMake to generate precompiled headers on all platforms "Professional CMake" book suggest the following: "Targets should build successfully with or without compiler support for precompiled headers. It should be considered an optimization, not a requirement. In particular, do not explicitly include a precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically generated precompile header on the compiler command line instead. This is more portable across the major compilers and is likely to be easier to maintain. It will also avoid warnings being generated from certain code checking tools like iwyu (include what you use)." Therefore, removed the "#include " from sources, also there is no need for the "#ifdef _PreComp_" anymore --- src/Mod/Start/App/AppStart.cpp | 1 - src/Mod/Start/App/CMakeLists.txt | 8 ++++++- src/Mod/Start/App/CustomFolderModel.cpp | 3 --- src/Mod/Start/App/DisplayedFilesModel.cpp | 4 +--- src/Mod/Start/App/ExamplesModel.cpp | 4 +--- src/Mod/Start/App/FileUtilities.cpp | 3 --- src/Mod/Start/App/PreCompiled.cpp | 25 -------------------- src/Mod/Start/App/PreCompiled.h | 3 --- src/Mod/Start/App/RecentFilesModel.cpp | 4 ---- src/Mod/Start/App/ThumbnailSource.cpp | 3 --- src/Mod/Start/Gui/AppStartGui.cpp | 4 +--- src/Mod/Start/Gui/CMakeLists.txt | 15 ++++++------ src/Mod/Start/Gui/DlgStartPreferencesImp.cpp | 1 - src/Mod/Start/Gui/FileCardDelegate.cpp | 4 ---- src/Mod/Start/Gui/FileCardView.cpp | 1 - src/Mod/Start/Gui/FirstStartWidget.cpp | 4 +--- src/Mod/Start/Gui/FlowLayout.cpp | 1 - src/Mod/Start/Gui/GeneralSettingsWidget.cpp | 4 +--- src/Mod/Start/Gui/Manipulator.cpp | 4 +--- src/Mod/Start/Gui/NewFileButton.cpp | 4 ---- src/Mod/Start/Gui/PreCompiled.cpp | 25 -------------------- src/Mod/Start/Gui/PreCompiled.h | 3 --- src/Mod/Start/Gui/StartView.cpp | 3 --- src/Mod/Start/Gui/ThemeSelectorWidget.cpp | 6 ++--- 24 files changed, 23 insertions(+), 114 deletions(-) delete mode 100644 src/Mod/Start/App/PreCompiled.cpp delete mode 100644 src/Mod/Start/Gui/PreCompiled.cpp diff --git a/src/Mod/Start/App/AppStart.cpp b/src/Mod/Start/App/AppStart.cpp index 075e0b819b..002cbe93a6 100644 --- a/src/Mod/Start/App/AppStart.cpp +++ b/src/Mod/Start/App/AppStart.cpp @@ -21,7 +21,6 @@ * * ***************************************************************************/ -#include "PreCompiled.h" #include #include diff --git a/src/Mod/Start/App/CMakeLists.txt b/src/Mod/Start/App/CMakeLists.txt index 60c60a7694..4eae7d2c9a 100644 --- a/src/Mod/Start/App/CMakeLists.txt +++ b/src/Mod/Start/App/CMakeLists.txt @@ -35,7 +35,6 @@ set(Start_SRCS CustomFolderModel.h FileUtilities.cpp FileUtilities.h - PreCompiled.cpp PreCompiled.h RecentFilesModel.cpp RecentFilesModel.h @@ -43,6 +42,13 @@ set(Start_SRCS ThumbnailSource.h) add_library(Start SHARED ${Start_SRCS}) + +if(FREECAD_USE_PCH) + target_precompile_headers(Start PRIVATE + $<$:"${CMAKE_CURRENT_LIST_DIR}/PreCompiled.h"> + ) +endif(FREECAD_USE_PCH) + target_link_libraries(Start ${Start_LIBS}) if (FREECAD_WARN_ERROR) target_compile_warn_error(Start) diff --git a/src/Mod/Start/App/CustomFolderModel.cpp b/src/Mod/Start/App/CustomFolderModel.cpp index 651425f5f9..1439591a08 100644 --- a/src/Mod/Start/App/CustomFolderModel.cpp +++ b/src/Mod/Start/App/CustomFolderModel.cpp @@ -21,10 +21,7 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include -#endif #include "CustomFolderModel.h" #include diff --git a/src/Mod/Start/App/DisplayedFilesModel.cpp b/src/Mod/Start/App/DisplayedFilesModel.cpp index b4d837e5cc..e70171b8d4 100644 --- a/src/Mod/Start/App/DisplayedFilesModel.cpp +++ b/src/Mod/Start/App/DisplayedFilesModel.cpp @@ -21,8 +21,6 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include #include @@ -30,7 +28,7 @@ #include #include #include -#endif + #include "DisplayedFilesModel.h" diff --git a/src/Mod/Start/App/ExamplesModel.cpp b/src/Mod/Start/App/ExamplesModel.cpp index a295d50c17..616b9bc88a 100644 --- a/src/Mod/Start/App/ExamplesModel.cpp +++ b/src/Mod/Start/App/ExamplesModel.cpp @@ -21,10 +21,8 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include -#endif + #include "ExamplesModel.h" #include diff --git a/src/Mod/Start/App/FileUtilities.cpp b/src/Mod/Start/App/FileUtilities.cpp index 5e4832d6d3..b57a03f3fc 100644 --- a/src/Mod/Start/App/FileUtilities.cpp +++ b/src/Mod/Start/App/FileUtilities.cpp @@ -21,8 +21,6 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include #include @@ -30,7 +28,6 @@ #include #include #include -#endif #include "FileUtilities.h" #include diff --git a/src/Mod/Start/App/PreCompiled.cpp b/src/Mod/Start/App/PreCompiled.cpp deleted file mode 100644 index b17d7731bd..0000000000 --- a/src/Mod/Start/App/PreCompiled.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-License-Identifier: LGPL-2.1-or-later -/**************************************************************************** - * * -# Copyright (c) 2024 The FreeCAD Project Association AISBL * - * * - * This file is part of FreeCAD. * - * * - * FreeCAD is free software: you can redistribute it and/or modify it * - * under the terms of the GNU Lesser General Public License as * - * published by the Free Software Foundation, either version 2.1 of the * - * License, or (at your option) any later version. * - * * - * FreeCAD is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with FreeCAD. If not, see * - * . * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" diff --git a/src/Mod/Start/App/PreCompiled.h b/src/Mod/Start/App/PreCompiled.h index 8de06e5dd6..3e7db2aa11 100644 --- a/src/Mod/Start/App/PreCompiled.h +++ b/src/Mod/Start/App/PreCompiled.h @@ -26,8 +26,6 @@ #include -#ifdef _PreComp_ - // standard #include #include @@ -62,5 +60,4 @@ #include #include -#endif // _PreComp_ #endif // START_PRECOMPILED_H diff --git a/src/Mod/Start/App/RecentFilesModel.cpp b/src/Mod/Start/App/RecentFilesModel.cpp index 1a45b1b343..dbd5d4b56c 100644 --- a/src/Mod/Start/App/RecentFilesModel.cpp +++ b/src/Mod/Start/App/RecentFilesModel.cpp @@ -21,10 +21,6 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ -#endif - #include "RecentFilesModel.h" #include #include diff --git a/src/Mod/Start/App/ThumbnailSource.cpp b/src/Mod/Start/App/ThumbnailSource.cpp index b80040c93c..5ab4faad45 100644 --- a/src/Mod/Start/App/ThumbnailSource.cpp +++ b/src/Mod/Start/App/ThumbnailSource.cpp @@ -21,15 +21,12 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include #include #include #include #include -#endif #include "ThumbnailSource.h" diff --git a/src/Mod/Start/Gui/AppStartGui.cpp b/src/Mod/Start/Gui/AppStartGui.cpp index 99caa2ab26..4e67f0e141 100644 --- a/src/Mod/Start/Gui/AppStartGui.cpp +++ b/src/Mod/Start/Gui/AppStartGui.cpp @@ -21,11 +21,9 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include -#endif + #include #include diff --git a/src/Mod/Start/Gui/CMakeLists.txt b/src/Mod/Start/Gui/CMakeLists.txt index a78e65b531..57d03d4cf3 100644 --- a/src/Mod/Start/Gui/CMakeLists.txt +++ b/src/Mod/Start/Gui/CMakeLists.txt @@ -57,7 +57,6 @@ SET(StartGui_SRCS Manipulator.h NewFileButton.cpp NewFileButton.h - PreCompiled.cpp PreCompiled.h StartView.cpp StartView.h @@ -76,13 +75,6 @@ SET(StartGuiThumbnail_PNG Resources/thumbnails/Theme_thumbnail_light.png ) -# TODO: Evaluate PCH use with Qt6/QtQuick/Qml -if (FREECAD_USE_PCH) - add_definitions(-D_PreComp_) - GET_MSVC_PRECOMPILED_SOURCE("PreCompiled.cpp" PCH_SRCS ${StartGui_SRCS}) - ADD_MSVC_PRECOMPILED_HEADER(StartGui PreCompiled.h PreCompiled.cpp PCH_SRCS) -endif (FREECAD_USE_PCH) - # Add CoreFoundation to StartGui_LIBS on macOS if (APPLE) find_library(COREFOUNDATION_LIBRARY CoreFoundation) @@ -99,6 +91,13 @@ add_library(StartGui SHARED ${StartGuiThumbnail_PNG} ) +# TODO: Evaluate PCH use with Qt6/QtQuick/Qml +if(FREECAD_USE_PCH) + target_precompile_headers(StartGui PRIVATE + $<$:"${CMAKE_CURRENT_LIST_DIR}/PreCompiled.h"> + ) +endif(FREECAD_USE_PCH) + target_include_directories( StartGui PRIVATE diff --git a/src/Mod/Start/Gui/DlgStartPreferencesImp.cpp b/src/Mod/Start/Gui/DlgStartPreferencesImp.cpp index 84b17fae2d..39f77c62a4 100644 --- a/src/Mod/Start/Gui/DlgStartPreferencesImp.cpp +++ b/src/Mod/Start/Gui/DlgStartPreferencesImp.cpp @@ -20,7 +20,6 @@ * * ***************************************************************************/ -#include "PreCompiled.h" #include diff --git a/src/Mod/Start/Gui/FileCardDelegate.cpp b/src/Mod/Start/Gui/FileCardDelegate.cpp index 7162a40710..f0aa420d5e 100644 --- a/src/Mod/Start/Gui/FileCardDelegate.cpp +++ b/src/Mod/Start/Gui/FileCardDelegate.cpp @@ -21,9 +21,6 @@ * * ***************************************************************************/ -#include "PreCompiled.h" - -#ifndef _PreComp_ #include #include #include @@ -36,7 +33,6 @@ #include #include #include -#endif #include "FileCardDelegate.h" #include "../App/DisplayedFilesModel.h" diff --git a/src/Mod/Start/Gui/FileCardView.cpp b/src/Mod/Start/Gui/FileCardView.cpp index b7ab1d91ee..f0e5795374 100644 --- a/src/Mod/Start/Gui/FileCardView.cpp +++ b/src/Mod/Start/Gui/FileCardView.cpp @@ -21,7 +21,6 @@ * * ***************************************************************************/ -#include "PreCompiled.h" #include "FileCardView.h" #include diff --git a/src/Mod/Start/Gui/FirstStartWidget.cpp b/src/Mod/Start/Gui/FirstStartWidget.cpp index 59c8ef4d8c..b21042a67f 100644 --- a/src/Mod/Start/Gui/FirstStartWidget.cpp +++ b/src/Mod/Start/Gui/FirstStartWidget.cpp @@ -21,9 +21,7 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include #include @@ -31,7 +29,7 @@ #include #include #include -#endif + #include "FirstStartWidget.h" #include "ThemeSelectorWidget.h" diff --git a/src/Mod/Start/Gui/FlowLayout.cpp b/src/Mod/Start/Gui/FlowLayout.cpp index f12b45d003..3befc298d9 100644 --- a/src/Mod/Start/Gui/FlowLayout.cpp +++ b/src/Mod/Start/Gui/FlowLayout.cpp @@ -21,7 +21,6 @@ * * **************************************************************************/ -#include "PreCompiled.h" #include #include "FlowLayout.h" diff --git a/src/Mod/Start/Gui/GeneralSettingsWidget.cpp b/src/Mod/Start/Gui/GeneralSettingsWidget.cpp index 6a0a10ab74..3082d3987b 100644 --- a/src/Mod/Start/Gui/GeneralSettingsWidget.cpp +++ b/src/Mod/Start/Gui/GeneralSettingsWidget.cpp @@ -21,8 +21,6 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include #include @@ -31,7 +29,7 @@ #include #include #include -#endif + #include #include "GeneralSettingsWidget.h" diff --git a/src/Mod/Start/Gui/Manipulator.cpp b/src/Mod/Start/Gui/Manipulator.cpp index 9c4662d597..ab96853906 100644 --- a/src/Mod/Start/Gui/Manipulator.cpp +++ b/src/Mod/Start/Gui/Manipulator.cpp @@ -21,12 +21,10 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include #include -#endif + #include "Manipulator.h" #include "StartView.h" diff --git a/src/Mod/Start/Gui/NewFileButton.cpp b/src/Mod/Start/Gui/NewFileButton.cpp index 22081f0434..cd6a68c0f7 100644 --- a/src/Mod/Start/Gui/NewFileButton.cpp +++ b/src/Mod/Start/Gui/NewFileButton.cpp @@ -21,16 +21,12 @@ * * ***************************************************************************/ -#include "PreCompiled.h" - -#ifndef _PreComp_ #include #include #include #include #include #include -#endif #include "NewFileButton.h" #include diff --git a/src/Mod/Start/Gui/PreCompiled.cpp b/src/Mod/Start/Gui/PreCompiled.cpp deleted file mode 100644 index b17d7731bd..0000000000 --- a/src/Mod/Start/Gui/PreCompiled.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-License-Identifier: LGPL-2.1-or-later -/**************************************************************************** - * * -# Copyright (c) 2024 The FreeCAD Project Association AISBL * - * * - * This file is part of FreeCAD. * - * * - * FreeCAD is free software: you can redistribute it and/or modify it * - * under the terms of the GNU Lesser General Public License as * - * published by the Free Software Foundation, either version 2.1 of the * - * License, or (at your option) any later version. * - * * - * FreeCAD is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with FreeCAD. If not, see * - * . * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" diff --git a/src/Mod/Start/Gui/PreCompiled.h b/src/Mod/Start/Gui/PreCompiled.h index 3812963c2c..d5af8c97d3 100644 --- a/src/Mod/Start/Gui/PreCompiled.h +++ b/src/Mod/Start/Gui/PreCompiled.h @@ -26,8 +26,6 @@ #include -#ifdef _PreComp_ - // standard #include #include @@ -72,5 +70,4 @@ #include #include -#endif // _PreComp_ #endif // STARTGUI_PRECOMPILED_H diff --git a/src/Mod/Start/Gui/StartView.cpp b/src/Mod/Start/Gui/StartView.cpp index cf9ced5b9e..bd75e3544b 100644 --- a/src/Mod/Start/Gui/StartView.cpp +++ b/src/Mod/Start/Gui/StartView.cpp @@ -21,9 +21,7 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include #include @@ -38,7 +36,6 @@ #include #include #include -#endif #include "StartView.h" #include "FileCardDelegate.h" diff --git a/src/Mod/Start/Gui/ThemeSelectorWidget.cpp b/src/Mod/Start/Gui/ThemeSelectorWidget.cpp index a17ecc9c3f..8f6a41ab56 100644 --- a/src/Mod/Start/Gui/ThemeSelectorWidget.cpp +++ b/src/Mod/Start/Gui/ThemeSelectorWidget.cpp @@ -21,15 +21,13 @@ * * ***************************************************************************/ -#include "PreCompiled.h" -#ifndef _PreComp_ #include #include #include #include #include #include -#endif + #include "ThemeSelectorWidget.h" #include @@ -37,6 +35,8 @@ #include #include +#include + #ifdef FC_OS_MACOSX #include #endif