@@ -44,6 +44,45 @@ else()
4444 #target_compile_options(${PROJECT_NAME} INTERFACE -Wall -Wextra -Wpendantic -Werror)
4545endif ()
4646
47+ # Optimizations
48+ target_compile_options (${PROJECT_NAME } INTERFACE
49+ # MSVC/clang with MSVC frontend
50+ $<$<OR :$<CXX_COMPILER_ID :MSVC >,$<AND :$<CXX_COMPILER_ID :Clang >,$<CXX_COMPILER_FRONTEND_VARIANT :MSVC >>>:
51+ $<$<CONFIG :Release >:/O2 >
52+ $<$<CONFIG :Release >:/GL >
53+ $<$<CONFIG :Debug >:/RTC1 >
54+ /Zc :preprocessor
55+ >
56+ # GCC/clang with GNU frontend
57+ $<$<OR :$<CXX_COMPILER_ID :GNU >,$<AND :$<CXX_COMPILER_ID :Clang >,$<CXX_COMPILER_FRONTEND_VARIANT :GNU >>>:
58+ $<$<CONFIG :Release >:-O3 >
59+ $<$<CONFIG :Release >:-flto >
60+ >
61+ # disable noexcept type warning on GCC
62+ $<$<CXX_COMPILER_ID :GNU >:
63+ $<$<CONFIG :Release >:-O3 >
64+ $<$<CONFIG :Release >:-flto >
65+ >
66+ )
67+
68+ target_link_options (${PROJECT_NAME } INTERFACE
69+ # MSVC/clang with MSVC frontend
70+ $<$<OR :$<CXX_COMPILER_ID :MSVC >,$<AND :$<CXX_COMPILER_ID :Clang >,$<CXX_COMPILER_FRONTEND_VARIANT :MSVC >>>:
71+ $<$<CONFIG :Release >:/LTCG >
72+ >
73+ # GCC/clang with GNU frontend
74+ $<$<OR :$<CXX_COMPILER_ID :GNU >,$<AND :$<CXX_COMPILER_ID :Clang >,$<CXX_COMPILER_FRONTEND_VARIANT :GNU >>>:
75+ $<$<CONFIG :Release >:-flto >
76+ -static
77+ $<$<CONFIG :Release >:-fuse -ld =lld >
78+ >
79+ # disable noexcept type warning on GCC
80+ $<$<CXX_COMPILER_ID :GNU >:
81+ $<$<CONFIG :Release >:-flto >
82+ -static
83+ >
84+ )
85+
4786if (BUILD_PCRE2CPP_TESTS)
4887 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR } /tests )
4988endif ()
0 commit comments