-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCMakeLists.txt
108 lines (95 loc) · 4.8 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(xTGA VERSION 110
DESCRIPTION "A C/C++ library for opening/saving/manipulating TrueVision Targa (TGA) Images."
LANGUAGES C CXX)
set(XTGA_VERSION ${PROJECT_VERSION})
set(XTGA_VERSION_ASCII "1.1")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
add_subdirectory(xTGA)
add_subdirectory(tests)
# tests
add_test(TestDynamicLinkage test_dll)
add_test(TestStaticLinkage test_static)
add_test(TestTypeSize test_types)
add_test(TestLoading test_loading)
add_test(TestCLinkage test_c_linkage)
add_test(TestCLoading test_c_loading)
enable_testing()
# Standards
target_compile_features(xTGA PRIVATE
cxx_range_for
cxx_nullptr
cxx_lambdas
cxx_auto_type
cxx_rvalue_references
)
target_compile_features(xTGAs PRIVATE
cxx_range_for
cxx_nullptr
cxx_lambdas
cxx_auto_type
cxx_rvalue_references
)
# Packager
if(MSVC)
add_custom_target(PACKAGE
COMMENT "Packaging library for distribution..."
COMMAND cd ${PROJECT_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E remove_directory build
COMMAND mkdir build
COMMAND mkdir packages
COMMAND cd build
COMMAND ${CMAKE_COMMAND} -G "Visual Studio 15 2017 Win64" ..
COMMAND ${CMAKE_COMMAND} --build . --target xTGA --config Release
COMMAND ${CMAKE_COMMAND} --build . --target xTGAs --config Release
COMMAND ${CMAKE_COMMAND} --build . --target xTGA --config Debug
COMMAND ${CMAKE_COMMAND} --build . --target xTGAs --config Debug
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/xTGA/include/xTGA ${PROJECT_SOURCE_DIR}/build/include/xTGA
COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_SOURCE_DIR}/build/include/xTGA/.gitignore
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Release/xTGA.dll ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Release/xTGA.lib ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Release/xTGAs.lib ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Debug/xTGA_d.dll ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Debug/xTGA_d.lib ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Debug/xTGAs_d.lib ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/LICENSE ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E tar cf ${PROJECT_SOURCE_DIR}/packages/xtga-${XTGA_VERSION_ASCII}-Win64.zip --format=zip -- xTGA.dll xTGA.lib xTGA_d.dll xTGA_d.lib xTGAs.lib xTGAs_d.lib include LICENSE
COMMAND cd ..
COMMAND ${CMAKE_COMMAND} -E remove_directory build
COMMAND mkdir build
COMMAND cd build
COMMAND ${CMAKE_COMMAND} -G "Visual Studio 15 2017" ..
COMMAND ${CMAKE_COMMAND} --build . --target xTGA --config Release
COMMAND ${CMAKE_COMMAND} --build . --target xTGAs --config Release
COMMAND ${CMAKE_COMMAND} --build . --target xTGA --config Debug
COMMAND ${CMAKE_COMMAND} --build . --target xTGAs --config Debug
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/xTGA/include/xTGA ${PROJECT_SOURCE_DIR}/build/include/xTGA
COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_SOURCE_DIR}/build/include/xTGA/.gitignore
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Release/xTGA.dll ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Release/xTGA.lib ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Release/xTGAs.lib ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Debug/xTGA_d.dll ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Debug/xTGA_d.lib ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/build/Debug/xTGAs_d.lib ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/LICENSE ${PROJECT_SOURCE_DIR}/build
COMMAND ${CMAKE_COMMAND} -E tar cf ${PROJECT_SOURCE_DIR}/packages/xtga-${XTGA_VERSION_ASCII}-Win32.zip --format=zip -- xTGA.dll xTGA.lib xTGA_d.dll xTGA_d.lib xTGAs.lib xTGAs_d.lib include LICENSE
COMMAND cd ..
COMMAND ${CMAKE_COMMAND} -E remove_directory build
)
elseif(UNIX)
add_custom_target(PACKAGE
COMMENT "Packaging library for distribution..."
COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_SOURCE_DIR} chmod +x .travis/package_files_linux.sh
COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_SOURCE_DIR} .travis/package_files_linux.sh ${XTGA_VERSION_ASCII}
)
endif()
# Doxygen
configure_file(${PROJECT_SOURCE_DIR}/docs/cmake_Doxyfile ${PROJECT_SOURCE_DIR}/docs/Doxyfile)
add_custom_target(GenerateDocumentation
COMMENT "Generating documentation under docs..."
COMMAND cd ${PROJECT_SOURCE_DIR}/docs
COMMAND doxygen Doxyfile
)