diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a3a74b21126d..0bb59a9742aea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -297,7 +297,6 @@ add_custom_command( WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) -set (PCH ${PROJECT_BINARY_DIR}/all.h.gch) precompiled_header(QT_INCLUDES all) ADD_CUSTOM_TARGET(mops1 DEPENDS ${PROJECT_BINARY_DIR}/all.h) ADD_CUSTOM_TARGET(mops2 DEPENDS ${PCH}) diff --git a/aeolus/aeolus/CMakeLists.txt b/aeolus/aeolus/CMakeLists.txt index 8d469ddec2269..facf43ccc917a 100644 --- a/aeolus/aeolus/CMakeLists.txt +++ b/aeolus/aeolus/CMakeLists.txt @@ -38,9 +38,11 @@ add_library (aeolus STATIC set_target_properties ( aeolus PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(aeolus all) + ADD_DEPENDENCIES(aeolus mops1) ADD_DEPENDENCIES(aeolus mops2) diff --git a/awl/CMakeLists.txt b/awl/CMakeLists.txt index 59854ce84bbab..e01f232e13ae1 100644 --- a/awl/CMakeLists.txt +++ b/awl/CMakeLists.txt @@ -67,9 +67,11 @@ add_library ( set_target_properties ( awl PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(awl all) + ADD_DEPENDENCIES(awl mops1) ADD_DEPENDENCIES(awl mops2) diff --git a/build/CreatePrecompiledHeader.cmake b/build/CreatePrecompiledHeader.cmake index a106462bfa35c..3918a1f9488c6 100644 --- a/build/CreatePrecompiledHeader.cmake +++ b/build/CreatePrecompiledHeader.cmake @@ -29,6 +29,10 @@ macro( precompiled_header includes header_name ) # Prepare the compile flags var for passing to GCC separate_arguments( compile_flags ) + set (PCH ${PROJECT_BINARY_DIR}/${header_name}.h.gch) + set (PCH_HEADER "${PROJECT_BINARY_DIR}/${header_name}.h") + set (PCH_INCLUDE "-include ${PCH_HEADER}") + add_custom_command( OUTPUT ${PROJECT_BINARY_DIR}/${header_name}.h.gch COMMAND ${CMAKE_CXX_COMPILER} @@ -38,4 +42,18 @@ macro( precompiled_header includes header_name ) VERBATIM ) endif() +endmacro() + +# Xcode PCH support. Has to be called *AFTER* the target is created. +# "header_name" - the name of the PCH header, without the extension; "all" or something similar; +# note that the source file compiling the header needs to have the same name +macro( xcode_pch target_name header_name ) + if( APPLE ) + set_target_properties( + ${target_name} + PROPERTIES + XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${PROJECT_BINARY_DIR}/${header_name}.h" + XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES" + ) + endif() endmacro() \ No newline at end of file diff --git a/bww2mxml/CMakeLists.txt b/bww2mxml/CMakeLists.txt index 16b28a58e6fb2..d6b779465d73f 100644 --- a/bww2mxml/CMakeLists.txt +++ b/bww2mxml/CMakeLists.txt @@ -59,6 +59,8 @@ if (NOT MINGW AND NOT APPLE) ADD_DEPENDENCIES(bww2mxml mops2) endif (NOT MINGW AND NOT APPLE) +xcode_pch(bww all) + ADD_DEPENDENCIES(bww mops1) ADD_DEPENDENCIES(bww mops2) diff --git a/fluid/CMakeLists.txt b/fluid/CMakeLists.txt index a6977eabe4169..848298940b692 100644 --- a/fluid/CMakeLists.txt +++ b/fluid/CMakeLists.txt @@ -44,9 +44,11 @@ add_library (fluid STATIC set_target_properties ( fluid PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(fluid all) + ADD_DEPENDENCIES(fluid mops1) ADD_DEPENDENCIES(fluid mops2) diff --git a/libmscore/CMakeLists.txt b/libmscore/CMakeLists.txt index d95ed0d407245..92a468501b0cc 100644 --- a/libmscore/CMakeLists.txt +++ b/libmscore/CMakeLists.txt @@ -80,15 +80,17 @@ if (SCRIPT_INTERFACE) set_target_properties ( libmscore PROPERTIES - COMPILE_FLAGS "-g -include ${PROJECT_BINARY_DIR}/all.h -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "-g ${PCH_INCLUDE} -Wall -Wextra -Winvalid-pch" ) else (SCRIPT_INTERFACE) set_target_properties ( libmscore PROPERTIES - COMPILE_FLAGS "-g -include ${PROJECT_BINARY_DIR}/all.h -include libmscore/noscript.h -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "-g ${PCH_INCLUDE} -include libmscore/noscript.h -Wall -Wextra -Winvalid-pch" ) endif (SCRIPT_INTERFACE) +xcode_pch(libmscore all) + ADD_DEPENDENCIES(libmscore mops1) ADD_DEPENDENCIES(libmscore mops2) diff --git a/mscore/CMakeLists.txt b/mscore/CMakeLists.txt index 60fedfafc40ee..78a4f98633103 100644 --- a/mscore/CMakeLists.txt +++ b/mscore/CMakeLists.txt @@ -236,13 +236,13 @@ if (MINGW) if(CMAKE_BUILD_TYPE MATCHES "DEBUG") set_target_properties( mscore PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch ${QT_DEFINITIONS} -DQT_SVG_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch ${QT_DEFINITIONS} -DQT_SVG_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB" LINK_FLAGS "${PROJECT_BINARY_DIR}/resfile.o -mwindows -mconsole -L ${CROSSQT}/lib" ) else(CMAKE_BUILD_TYPE MATCHES "DEBUG") set_target_properties( mscore PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -Wall -Wextra -Winvalid-pch ${QT_DEFINITIONS} -DQT_SVG_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB" + COMPILE_FLAGS "${PCH_INCLUDE} -Wall -Wextra -Winvalid-pch ${QT_DEFINITIONS} -DQT_SVG_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB" LINK_FLAGS "-Wl,-S ${PROJECT_BINARY_DIR}/resfile.o -mwindows -L ${CROSSQT}/lib" ) endif(CMAKE_BUILD_TYPE MATCHES "DEBUG") @@ -346,7 +346,7 @@ else (MINGW) set_target_properties ( mscore PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wno-overloaded-virtual -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wno-overloaded-virtual -Winvalid-pch" LINK_FLAGS "-L${QT_LIBRARY_DIR}" ) if (HAS_AUDIOFILE) @@ -389,10 +389,8 @@ else (MINGW) set_target_properties(mscore PROPERTIES LINK_FLAGS "-stdlib=libc++" - #XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${PROJECT_BINARY_DIR}/all.h" - #XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES" ) - + xcode_pch(mscore all) install (TARGETS mscore BUNDLE DESTINATION ${CMAKE_INSTALL_PREFIX}) install (FILES data/mscore.icns DESTINATION ${Mscore_SHARE_NAME}${Mscore_INSTALL_NAME}) install (FILES data/musescoreDocument.icns DESTINATION ${Mscore_SHARE_NAME}${Mscore_INSTALL_NAME}) diff --git a/mstyle/CMakeLists.txt b/mstyle/CMakeLists.txt index a20c891854d75..e3b9ced1b1d17 100644 --- a/mstyle/CMakeLists.txt +++ b/mstyle/CMakeLists.txt @@ -64,9 +64,11 @@ add_library ( set_target_properties ( mstyle PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(mstyle all) + ADD_DEPENDENCIES(mstyle mops1) ADD_DEPENDENCIES(mstyle mops2) diff --git a/msynth/CMakeLists.txt b/msynth/CMakeLists.txt index f5012f50efd12..1ed5f403d1948 100644 --- a/msynth/CMakeLists.txt +++ b/msynth/CMakeLists.txt @@ -42,8 +42,10 @@ add_library ( set_target_properties ( msynth PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(msynth all) + ADD_DEPENDENCIES(msynth mops1) ADD_DEPENDENCIES(msynth mops2) diff --git a/omr/CMakeLists.txt b/omr/CMakeLists.txt index 33f8d9acb1ffe..b6df1eff08204 100644 --- a/omr/CMakeLists.txt +++ b/omr/CMakeLists.txt @@ -47,9 +47,11 @@ add_library ( set_target_properties ( omr PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(omr all) + ADD_DEPENDENCIES(omr mops1) ADD_DEPENDENCIES(omr mops2) diff --git a/thirdparty/diff/CMakeLists.txt b/thirdparty/diff/CMakeLists.txt index c735c7ea8eb1a..d0155b2147e2c 100644 --- a/thirdparty/diff/CMakeLists.txt +++ b/thirdparty/diff/CMakeLists.txt @@ -36,9 +36,11 @@ add_library(diff_match_patch STATIC set_target_properties ( diff_match_patch PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(diff_match_patch all) + ADD_DEPENDENCIES(diff_match_patch mops1) ADD_DEPENDENCIES(diff_match_patch mops2) diff --git a/thirdparty/ofqf/CMakeLists.txt b/thirdparty/ofqf/CMakeLists.txt index ab399b6b057cb..04831fbcd849e 100644 --- a/thirdparty/ofqf/CMakeLists.txt +++ b/thirdparty/ofqf/CMakeLists.txt @@ -43,9 +43,11 @@ add_library(ofqf STATIC set_target_properties ( ofqf PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(ofqf all) + ADD_DEPENDENCIES(ofqf mops1) ADD_DEPENDENCIES(ofqf mops2) diff --git a/thirdparty/singleapp/src/CMakeLists.txt b/thirdparty/singleapp/src/CMakeLists.txt index 6f636668585dc..40352cd3f5229 100644 --- a/thirdparty/singleapp/src/CMakeLists.txt +++ b/thirdparty/singleapp/src/CMakeLists.txt @@ -37,8 +37,10 @@ add_library ( set_target_properties ( qtsingleapp PROPERTIES - COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all.h -g -Wall -Wextra -Winvalid-pch" + COMPILE_FLAGS "${PCH_INCLUDE} -g -Wall -Wextra -Winvalid-pch" ) +xcode_pch(qtsingleapp all) + ADD_DEPENDENCIES(qtsingleapp mops1) ADD_DEPENDENCIES(qtsingleapp mops2)