Optimization cmake files

This commit is contained in:
Данил
2025-07-31 16:19:49 +07:00
parent 9c7e6cd22e
commit b40bd75ca7
2 changed files with 50 additions and 31 deletions
+13 -16
View File
@@ -3,24 +3,21 @@ file(GLOB SRC "*.cpp" "*.h")
add_library(FastRTTI STATIC ${SRC}) add_library(FastRTTI STATIC ${SRC})
if(CMAKE_BUILD_TYPE STREQUAL "Release") if(CMAKE_BUILD_TYPE STREQUAL "Release")
message(STATUS "Release mode: enabling optimizations")
if(MSVC) if(MSVC)
# /O2 - высокая оптимизация target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE /GR-)
# /GL - link-time optimization target_link_options(${CMAKE_PROJECT_NAME} PRIVATE /LTCG)
# /DNDEBUG - отключить assert()
# /GR- - отключить RTTI
target_compile_options(FastRTTI PRIVATE /O2 /GL /DNDEBUG /GR-)
target_link_options(FastRTTI PRIVATE /LTCG)
else() else()
# GCC / Clang # GCC / Clang
target_compile_options(FastRTTI PRIVATE target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -fno-rtti)
-O3 target_link_options(${CMAKE_PROJECT_NAME} PRIVATE -flto)
-march=native endif()
-flto
-fno-rtti elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
-DNDEBUG if(MSVC)
) target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE /GR-)
target_link_options(FastRTTI PRIVATE -flto) else()
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE
-g
-fno-rtti)
endif() endif()
endif() endif()
+37 -15
View File
@@ -1,48 +1,54 @@
file(GLOB test_default_src "test_default_rtti.cpp" "ClassesDefault/*.cpp" "ClassesDefault/*.h") file(GLOB test_default_src "test_default_rtti.cpp" "ClassesDefault/*.cpp" "ClassesDefault/*.h")
add_executable(test_defalt_rtti ${test_default_src}) add_executable(test_defalt_rtti ${test_default_src})
if(CMAKE_BUILD_TYPE STREQUAL "Release") if(CMAKE_BUILD_TYPE STREQUAL "Release")
message(STATUS "Release mode: enabling optimizations") message(STATUS "Release mode: enabling optimizations for test_default_rtti")
if(MSVC) if(MSVC)
# /O2 - высокая оптимизация
# /GL - link-time optimization
# /DNDEBUG - отключить assert()
target_compile_options(test_defalt_rtti PRIVATE /O2 /GL /DNDEBUG) target_compile_options(test_defalt_rtti PRIVATE /O2 /GL /DNDEBUG)
target_link_options(test_defalt_rtti PRIVATE /LTCG) target_link_options(test_defalt_rtti PRIVATE /LTCG)
else() else()
# GCC / Clang
target_compile_options(test_defalt_rtti PRIVATE target_compile_options(test_defalt_rtti PRIVATE
-O3 -O3
-march=native -march=native
-flto -flto
-DNDEBUG -DNDEBUG
) )
target_link_options(Tests PRIVATE -flto) target_link_options(test_defalt_rtti PRIVATE -flto)
endif()
elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
message(STATUS "Debug mode: enabling runtime checks for test_default_rtti")
if(MSVC)
target_compile_options(test_defalt_rtti PRIVATE /Od /Zi)
else()
target_compile_options(test_defalt_rtti PRIVATE
-O0
-g
-fsanitize=undefined
-fstack-protector
)
target_link_options(test_defalt_rtti PRIVATE -fsanitize=undefined)
endif() endif()
endif() endif()
# -------------------------------------------------------------
# test_fast_rtti — ускоренная реализация с отключённым RTTI
file(GLOB test_fast_src "test_fast_rtti.cpp" "ClassesFast/*.cpp" "ClassesFast/*.h") file(GLOB test_fast_src "test_fast_rtti.cpp" "ClassesFast/*.cpp" "ClassesFast/*.h")
add_executable(test_fast_rtti ${test_fast_src}) add_executable(test_fast_rtti ${test_fast_src})
target_link_libraries(test_fast_rtti PRIVATE FastRTTI) target_link_libraries(test_fast_rtti PRIVATE FastRTTI)
target_include_directories(test_fast_rtti PRIVATE ${PROJECT_SOURCE_DIR}/RTTI) target_include_directories(test_fast_rtti PRIVATE ${PROJECT_SOURCE_DIR}/RTTI)
if(CMAKE_BUILD_TYPE STREQUAL "Release") if(CMAKE_BUILD_TYPE STREQUAL "Release")
message(STATUS "Release mode: enabling optimizations") message(STATUS "Release mode: enabling optimizations for test_fast_rtti")
if(MSVC) if(MSVC)
# /O2 - высокая оптимизация
# /GL - link-time optimization
# /DNDEBUG - отключить assert()
# /GR- - отключить RTTI
target_compile_options(test_fast_rtti PRIVATE /O2 /GL /DNDEBUG /GR-) target_compile_options(test_fast_rtti PRIVATE /O2 /GL /DNDEBUG /GR-)
target_link_options(test_fast_rtti PRIVATE /LTCG) target_link_options(test_fast_rtti PRIVATE /LTCG)
else() else()
# GCC / Clang
target_compile_options(test_fast_rtti PRIVATE target_compile_options(test_fast_rtti PRIVATE
-O3 -O3
-march=native -march=native
@@ -52,4 +58,20 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release")
) )
target_link_options(test_fast_rtti PRIVATE -flto) target_link_options(test_fast_rtti PRIVATE -flto)
endif() endif()
elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
message(STATUS "Debug mode: enabling runtime checks for test_fast_rtti")
if(MSVC)
target_compile_options(test_fast_rtti PRIVATE /Od /Zi /GR-)
else()
target_compile_options(test_fast_rtti PRIVATE
-O0
-g
-fno-rtti
-fsanitize=undefined
-fstack-protector
)
target_link_options(test_fast_rtti PRIVATE -fsanitize=undefined)
endif()
endif() endif()