Optimization cmake files
This commit is contained in:
+13
-16
@@ -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
@@ -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()
|
||||||
Reference in New Issue
Block a user