forked from libhangul/libhangul
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
69 lines (57 loc) · 1.77 KB
/
CMakeLists.txt
File metadata and controls
69 lines (57 loc) · 1.77 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
cmake_minimum_required(VERSION 3.20)
project(libhangul C)
# 공유 라이브러리(DLL) 생성
add_library(hangul SHARED
hangul/hangulctype.c
hangul/hangulinputcontext.c
hangul/hangulkeyboard.c
hangul/hanja.c
)
target_include_directories(hangul PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/win32
)
if(MSVC)
target_compile_options(hangul PRIVATE /utf-8)
# DLL 내보내기 매크로 정의
target_compile_definitions(hangul PRIVATE
HANGUL_EXPORT
HANGUL_EXPORT_SYMBOLS
)
# Debug와 Release 구성에 따른 런타임 라이브러리 설정
#set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
# 추가적인 컴파일 옵션 설정
target_compile_options(hangul PRIVATE
$<$<CONFIG:Debug>:/MTd>
$<$<CONFIG:Release>:/MT>
)
# Module definition file
set_target_properties(hangul PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/libhangul.def"
LINK_FLAGS_DEBUG "/DEBUG:NONE") # 디버그 정보 생성 비활성화
endif()
target_compile_definitions(hangul PRIVATE
WIN32
ENABLE_EXTERNAL_KEYBOARDS=0
_CRT_NONSTDC_NO_DEPRECATE
_CRT_SECURE_NO_WARNINGS
$<$<CONFIG:Debug>:_DEBUG>
)
# Windows에서 DLL 출력 이름 설정
if(WIN32)
set_target_properties(hangul PROPERTIES
OUTPUT_NAME "libhangul"
PREFIX ""
DEBUG_POSTFIX "d"
)
endif()
# 버전 정보 설정
set_target_properties(hangul PROPERTIES
VERSION 0.1.0
SOVERSION 1
)
# 출력 디렉토리 설정
set_target_properties(hangul PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
)