-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
58 lines (44 loc) · 1.56 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
project(image)
set(TARGET image)
set(SRC_DIR src)
set(PUBLIC_HDR_DIR include)
set(PRIVATE_HDR_DIR src)
set(TEST_DIR test)
# Sources
set(SRCS ${SRC_DIR}/Image.cpp ${SRC_DIR}/ImageView.cpp ${SRC_DIR}/PlaneView.cpp)
# Include and target definitions
add_library(${TARGET} STATIC ${SRCS})
if(NOT PROJECT_IS_TOP_LEVEL)
add_library(cxximg::${TARGET} ALIAS ${TARGET})
endif()
target_include_directories(
${TARGET}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${PUBLIC_HDR_DIR}> $<INSTALL_INTERFACE:include>
PRIVATE ${PRIVATE_HDR_DIR}
)
target_link_libraries(${TARGET} PUBLIC math util)
# Compiler flags
target_compile_definitions(
${TARGET}
PUBLIC DEFAULT_WIDTH_ALIGNMENT=${CXXIMG_DEFAULT_WIDTH_ALIGNMENT}
DEFAULT_HEIGHT_ALIGNMENT=${CXXIMG_DEFAULT_HEIGHT_ALIGNMENT}
DEFAULT_SIZE_ALIGNMENT=${CXXIMG_DEFAULT_SIZE_ALIGNMENT}
)
if(HAVE_HALIDE)
target_link_libraries(${TARGET} PUBLIC Halide::Runtime)
target_compile_definitions(${TARGET} PUBLIC HAVE_HALIDE)
endif()
# Installation
if(CXXIMG_ENABLE_INSTALL)
install(TARGETS ${TARGET} EXPORT CXXImageTargets)
install(DIRECTORY ${PUBLIC_HDR_DIR}/${TARGET} DESTINATION include)
endif()
# Test
if(HAVE_GTEST AND BUILD_TESTING)
add_executable(
${TARGET}-test ${TEST_DIR}/BorderTest.cpp ${TEST_DIR}/ImageTest.cpp ${TEST_DIR}/LayoutTest.cpp
${TEST_DIR}/PlaneViewTest.cpp ${TEST_DIR}/ResizeExpressionTest.cpp
)
target_link_libraries(${TARGET}-test PRIVATE GTest::gtest_main image)
add_test(NAME ${TARGET}-test COMMAND ${TARGET}-test)
endif()