init
This commit is contained in:
commit
dfe1880c08
5 changed files with 125 additions and 0 deletions
63
CMakeLists.txt
Normal file
63
CMakeLists.txt
Normal file
|
@ -0,0 +1,63 @@
|
|||
cmake_minimum_required(VERSION 3.30)
|
||||
project(LearnGtk4 LANGUAGES CXX)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(GTKMM4 REQUIRED IMPORTED_TARGET gtkmm-4.0)
|
||||
|
||||
find_program(CCACHE_FOUND ccache)
|
||||
if (CCACHE_FOUND)
|
||||
message(STATUS "ccache found !")
|
||||
set_property(GLOBAL PROPERTY C_COMPILER_LAUNCHER ccache)
|
||||
set_property(GLOBAL PROPERTY C_LINKER_LAUNCHER ccache)
|
||||
set_property(GLOBAL PROPERTY CXX_COMPILER_LAUNCHER ccache)
|
||||
set_property(GLOBAL PROPERTY CXX_LINKER_LAUNCHER ccache)
|
||||
else ()
|
||||
message(STATUS "ccache not found")
|
||||
endif ()
|
||||
|
||||
set(COMPILE_FLAGS
|
||||
-pipe
|
||||
-march=znver3 # change to native or your architecture.
|
||||
-mtune=znver3 # same as above
|
||||
-mrdseed # be careful about this, this is linked to the x86 architecture.
|
||||
-mrdrnd # same as above
|
||||
-Wall
|
||||
-Wextra
|
||||
-Wpedantic
|
||||
-pedantic
|
||||
$<$<CONFIG:Release>:-ffunction-sections -fdata-sections>
|
||||
-fuse-ld=gold
|
||||
-funroll-loops
|
||||
-fdevirtualize-at-ltrans
|
||||
)
|
||||
set(LINKER_OPTIONS
|
||||
-Wl,--sort-common,--as-needed$<$<CONFIG:Release>:,--gc-sections,--strip-all>
|
||||
-fuse-ld=gold
|
||||
-fdevirtualize-at-ltrans
|
||||
)
|
||||
|
||||
option(ENABLE_COVERAGE "Enabling coverage" OFF)
|
||||
|
||||
if (${ENABLE_COVERAGE})
|
||||
message(STATUS "Coverage enabled")
|
||||
list(APPEND COMPILE_FLAGS --coverage)
|
||||
list(APPEND LINKER_OPTIONS --coverage)
|
||||
list(APPEND LINKER_FLAGS gcov)
|
||||
endif ()
|
||||
|
||||
add_executable(LearnGtk4 main.cpp
|
||||
hello_world.cpp
|
||||
hello_world.hpp)
|
||||
|
||||
set_target_properties(LearnGtk4 PROPERTIES
|
||||
CXX_STANDARD 20
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
CXX_EXTENSIONS OFF
|
||||
INTERPROCEDURAL_OPTIMIZATION ON
|
||||
UNITY_BUILD ON
|
||||
)
|
||||
|
||||
target_compile_definitions(LearnGtk4 PUBLIC $<$<CONFIG:Debug>:_GLIBCXX_DEBUG>)
|
||||
target_compile_options(LearnGtk4 PUBLIC ${COMPILE_OPTIONS})
|
||||
target_link_options(LearnGtk4 PUBLIC ${LINKER_OPTIONS})
|
||||
target_link_libraries(LearnGtk4 PkgConfig::GTKMM4)
|
Loading…
Add table
Add a link
Reference in a new issue