-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
56 lines (44 loc) · 2.35 KB
/
Copy pathCMakeLists.txt
File metadata and controls
56 lines (44 loc) · 2.35 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
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_LIST_DIR})
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting CMAKE_BUILD_TYPE type to 'Release' as none was specified.")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release")
endif()
endif()
project(cop VERSION 0.1.0 LANGUAGES C)
set(COP_PUBLIC_INCLUDES cop_main.h cop_strtypes.h cop_strdict.h cop_alloc.h cop_attributes.h cop_conversions.h cop_filemap.h cop_log.h cop_sort.h cop_thread.h cop_vec.h)
add_library(cop STATIC libcop/cop_strdict.c libcop/cop_filemap.c libcop/cop_alloc.c ${COP_PUBLIC_INCLUDES})
set_property(TARGET cop APPEND PROPERTY PUBLIC_HEADER ${COP_PUBLIC_INCLUDES})
set_property(TARGET cop PROPERTY ARCHIVE_OUTPUT_DIRECTORY "$<$<NOT:$<CONFIG:Release>>:$<CONFIG>>")
if ("x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC")
set_property(TARGET cop APPEND_STRING PROPERTY COMPILE_FLAGS " /W4")
else()
set_property(TARGET cop APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall")
endif()
target_include_directories(cop PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>")
if (UNIX)
target_link_libraries(cop pthread)
endif()
enable_testing()
add_subdirectory(tests)
include(CMakePackageConfigHelpers)
configure_package_config_file(cmake_support/copConfig.cmake.in ${CMAKE_BINARY_DIR}/cmake/cop/copConfig.cmake
INSTALL_DESTINATION "lib/cmake/cop"
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
write_basic_package_version_file(${CMAKE_BINARY_DIR}/cmake/cop/copConfigVersion.cmake
COMPATIBILITY SameMajorVersion)
export(TARGETS cop FILE "${PROJECT_BINARY_DIR}/cmake/cop/copTargets.cmake")
install(TARGETS cop
EXPORT cop_targets
RUNTIME DESTINATION "bin$<$<NOT:$<CONFIG:Release>>:/$<CONFIG>>"
ARCHIVE DESTINATION "lib$<$<NOT:$<CONFIG:Release>>:/$<CONFIG>>"
LIBRARY DESTINATION "lib$<$<NOT:$<CONFIG:Release>>:/$<CONFIG>>"
PUBLIC_HEADER DESTINATION include/cop
INCLUDES DESTINATION include)
install(EXPORT cop_targets DESTINATION lib/cmake/cop FILE "copTargets.cmake")
install(FILES "${CMAKE_BINARY_DIR}/cmake/cop/copConfig.cmake"
"${CMAKE_BINARY_DIR}/cmake/cop/copConfigVersion.cmake"
DESTINATION "lib/cmake/cop")
install(FILES LICENSE DESTINATION share/doc/cop)
install(FILES README.md DESTINATION share/doc/cop)