-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
73 lines (59 loc) · 2.46 KB
/
Copy pathCMakeLists.txt
File metadata and controls
73 lines (59 loc) · 2.46 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
70
71
72
73
cmake_minimum_required(VERSION 3.31)
project(crpdfcpp VERSION 1.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Add *.c .cpp for all dir
#subdirs(src/model_c)
#add_subdirectory(src/model_c)
set(DIR_MODEL_FILES_CPP
"src/model/point.cpp"
"src/model/limit.cpp"
#"src/model/controls/draw_pdf.cpp" #dont need only .hpp
"src/model/controls/create_pdf.cpp"
"src/model/controls/text.cpp"
"src/model/wrapper/point_wrapper.cpp"
"src/model/wrapper/limit_wrapper.cpp"
"src/model/wrapper/text_wrapper.cpp"
)
#C native
#set(DIR_MODEL_FILES_C "src/model/ext/crpdf_c.c")
find_package(PkgConfig REQUIRED)
pkg_check_modules(CAIRO REQUIRED IMPORTED_TARGET cairo cairo-pdf)
# OBJECTS FIRST
#add_library(${PROJECT_NAME}_objects OBJECT ${DIR_MODEL_FILES_CPP})
#PIC STATIC WORK.
#set_property(TARGET ${PROJECT_NAME}_objects PROPERTY POSITION_INDEPENDENT_CODE ON)
#STATIC
#add_library(${PROJECT_NAME}_static STATIC $<TARGET_OBJECTS:${PROJECT_NAME}_objects>)
#set_target_properties(${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
#add_library(${PROJECT_NAME}_shared SHARED $<TARGET_OBJECTS:${PROJECT_NAME}_objects>)
#set_target_properties(${PROJECT_NAME}_shared PROPERTIES
# OUTPUT_NAME ${PROJECT_NAME}
#)
add_library(${PROJECT_NAME}_lib ${DIR_MODEL_FILES_CPP})
set_target_properties(${PROJECT_NAME}_lib PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
target_include_directories(${PROJECT_NAME}_lib PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
# here C native
#add_library(${PROJECT_NAME}_lib_c ${DIR_MODEL_FILES_C})
#set_target_properties(${PROJECT_NAME}_lib_c PROPERTIES OUTPUT_NAME ${PROJECT_NAME}_c)
#target_include_directories(${PROJECT_NAME}_lib_c PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
#*** exe
add_executable(${PROJECT_NAME} src/main.cpp)
# En el CMakeLists.txt donde creas o importas crpdfcpp:
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib PkgConfig::CAIRO)
#***
#install name lib_ name bin automatic
install(TARGETS ${PROJECT_NAME}_lib ${PROJECT_NAME} ARCHIVE DESTINATION lib RUNTIME DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)
# Debe ir al final del CMakeLists.txt
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
@ONLY
)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
)
endif()
#use cmake -G Ninja -B build # -DBUILD_SHARED_LIBS=on SHARED