-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
50 lines (42 loc) · 1.93 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# **************************************************************************** #
# #
# ::: :::::::: #
# CMakeLists.txt :+: :+: :+: #
# +:+ +:+ +:+ #
# By: acyrenna <acyrenna@school21.ru> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2021/01/07 23:40:16 by acyrenna #+# #+# #
# Updated: 2021/01/09 15:21:46 by acyrenna ### ########.fr #
# #
# **************************************************************************** #
cmake_minimum_required(VERSION 3.15.3)
project(libft)
set(BUILD_FLAGS "-O3 -g -Wall -Werror -Wextra")
set(DST_NAME ft)
set(SRC_DIR ${PROJECT_SOURCE_DIR}/sources/)
set(INC_DIR ${PROJECT_SOURCE_DIR}/includes/)
option(COMPILE_SO "COMPILE_SO" OFF)
MACRO(INCLUDE_DIRS return_list)
FILE(GLOB_RECURSE new_list ${INC_DIR}*.h)
SET(dir_list "")
FOREACH(file_path ${new_list})
GET_FILENAME_COMPONENT(dir_path ${file_path} PATH)
SET(dir_list ${dir_list} ${dir_path})
ENDFOREACH()
LIST(REMOVE_DUPLICATES dir_list)
SET(${return_list} ${dir_list})
ENDMACRO()
set(INC_DIRS ./)
INCLUDE_DIRS(INC_DIRS)
FILE(GLOB_RECURSE LIBFT_SOURCES ${SRC_DIR}*.c)
FILE(GLOB_RECURSE LIBFT_HEADERS ${INC_DIR}*.h)
if (COMPILE_SO)
add_library(${PROJECT_NAME} SHARED ${LIBFT_SOURCES} ${LIBFT_HEADERS})
else()
add_library(${PROJECT_NAME} STATIC ${LIBFT_SOURCES})
endif()
target_include_directories(${PROJECT_NAME} PUBLIC ${INC_DIRS})
set_target_properties(${PROJECT_NAME} PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}
ARCHIVE_OUTPUT_NAME ${DST_NAME}
COMPILE_FLAGS ${BUILD_FLAGS})