-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
73 lines (57 loc) · 2.57 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
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.15 FATAL_ERROR)
set(VERSION 0.1.1)
project(resizer VERSION ${VERSION} LANGUAGES CXX)
set(TARGET_NAME rr) # Target name
set(CMAKE_CXX_STANDARD 17) # C++ Standard
# Internal library
add_library(resizer STATIC
src/resizer.cc
)
# Internal include directory
include_directories(include)
# Main executable
add_executable(${TARGET_NAME} src/targets/rr.cc)
# Link internal library to main executable
target_link_libraries(${TARGET_NAME} PRIVATE resizer)
# OpenCV
find_package(OpenCV REQUIRED core imgcodecs imgproc)
set(OpenCV_LIB_DIR "${OpenCV_DIR}/lib" CACHE PATH "Directory containing static OpenCV libraries")
set(OpenCV_BIN_DIR "${OpenCV_DIR}/bin" CACHE PATH "Directory containing dynamic OpenCV libraries")
link_directories(${OpenCV_LIB_DIR})
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(${TARGET_NAME} PUBLIC ${OpenCV_LIBS})
# cxxopts - Lightweight library for parsing options - https://github.com/jarro2783/cxxopts
add_subdirectory(extern/cxxopts)
target_include_directories(${TARGET_NAME} PUBLIC cxxopts)
target_link_libraries(${TARGET_NAME} PUBLIC cxxopts)
# uninstall target
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/CMake_Uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/CMake_Uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/CMake_Uninstall.cmake)
endif()
# end uninstall target
# CPack stuff
set(CPACK_GENERATOR "RPM")
set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_SOURCE_DIR}/release/Resizer.spec")
set(CPACK_PACKAGE_NAME "Resizer")
set(CPACK_PACKAGE_SUMMARY "A small image resizing utility.")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/release/DESCRIPTION.txt")
set(CPACK_PACKAGE_VERSION ${VERSION})
set(CPACK_PACKAGE_RELEASE 1)
set(CPACK_PACKAGE_LICENSE "MIT")
set(CPACK_PACKAGE_GROUP "Applications/Productivity/Other")
set(CPACK_PACKAGE_CONTACT "Milovan Gudelj <[email protected]>")
set(CPACK_PACKAGE_VENDOR "i.like.martians Inc.")
set(CMAKE_PROJECT_HOMEPAGE_URL "https://github.com/milovangudelj/resizer")
set(CPACK_PACKAGE_BUILD_REQUIRES "cmake >= 3.15")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}")
set(CPACK_INSTALL_PREFIX "/usr/local/bin")
set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
set(CPACK_RPM_CHANGELOG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/release/CHANGELOG.txt")
file(READ ${CPACK_RPM_CHANGELOG_FILE} CPACK_RPM_SPEC_CHANGELOG)
install(TARGETS rr RUNTIME DESTINATION bin)
include(CPack)