-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
35 lines (28 loc) · 1.92 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
cmake_minimum_required(VERSION 3.0) # sets cmake version
set(CMAKE_CXX_COMPILER "C:/MinGW/bin/g++.exe" )
set(CMAKE_C_COMPILER "C:/MinGW/bin/gcc.exe" )
project(IPC_project VERSION 1.0) # creates project
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-pthread -g -w -fopenmp")
# flag di compilazione -pthread lib per il threading -O0 disabilita ottimizzazione
# optimization levels:
# O0 -> no optimization, faster compilation time
# O1 -> basic optimization, reduces code size and improves performance, no significant change in compilation time [removes dead code, simple inlining, basic loop transformations]
# O2 -> advanced optimization, balances performance improvements with code size [O1 optimizations + loop unrolling, vectorization, better instruction scheduling]
# O3 -> maximum optimization, increased compile time and binary size [O2 optimizations + aggressive inlining, aggressive loop optimizations, function cloning]
# Ofast -> [O3 optimizations + aggressive math optimizations]
set(SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/src)
add_compile_definitions("LOG_DEBUG=1")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc)
add_library(${PROJECT_NAME} STATIC ${SOURCE_DIR}/main.c)
add_library(utils_lib STATIC ${SOURCE_DIR}/utils.c)
add_library(test_lib STATIC ${SOURCE_DIR}/test.c)
add_library(matrix_lib STATIC ${SOURCE_DIR}/matrix_operations.c)
target_link_libraries(matrix_lib PUBLIC utils_lib) # linked utils_lib to matrix_lib, PUBLIC -> if linked to matrix_lib, also links utils_lib
target_link_libraries(test_lib PUBLIC matrix_lib) # linked utils_lib to matrix_lib, PUBLIC -> if linked to matrix_lib, also links utils_lib
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
add_executable(project ${SOURCE_DIR}/main.c)
target_include_directories(project PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/inc)
target_link_libraries(project test_lib ${PROJECT_NAME})