Skip to content

Commit acd557a

Browse files
committed
cmake: Move to src subdir
This should facilitate building from just the essential files in the src directory, if necessary.
1 parent 1aed5ad commit acd557a

File tree

2 files changed

+113
-115
lines changed

2 files changed

+113
-115
lines changed

CMakeLists.txt

+2-115
Original file line numberDiff line numberDiff line change
@@ -1,122 +1,9 @@
1-
#
2-
# qt-heif-image-plugin listfile
3-
#
4-
51
cmake_minimum_required(VERSION 3.5) # lowest version tried
62

73
project(qtheifimageplugin)
84

9-
set(CMAKE_CXX_STANDARD 14)
10-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
11-
set(CMAKE_CXX_EXTENSIONS OFF)
12-
135
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/imageformats")
146

15-
# make release build, if not specified
16-
# (from https://blog.kitware.com/cmake-and-the-default-build-type/)
17-
set(default_build_type "RelWithDebInfo")
18-
19-
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
20-
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Build type" FORCE)
21-
set_property(
22-
CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
23-
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
24-
endif ()
25-
26-
# compiler flags
27-
# TODO: separate GCC and Clang warnings; add more
28-
set(
29-
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
30-
-Wall \
31-
-Wextra \
32-
-Wshadow \
33-
-Wformat-nonliteral \
34-
-Wformat-security \
35-
-Wnon-virtual-dtor \
36-
")
37-
38-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og")
39-
40-
set(sanitizer_flags "-fsanitize=address -fsanitize=undefined")
41-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${sanitizer_flags}")
42-
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG
43-
"${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${sanitizer_flags}")
44-
45-
#
46-
# third-party libs
47-
#
48-
49-
# qt
50-
find_package(Qt5 COMPONENTS Core Gui REQUIRED)
51-
add_definitions(-DQT_NO_KEYWORDS)
52-
set(CMAKE_AUTOMOC ON)
53-
54-
# libheif
55-
find_package(PkgConfig)
56-
pkg_check_modules(libheif REQUIRED libheif>=1.2)
57-
58-
#
59-
# logging
60-
#
61-
62-
set(QTHEIFIMAGEPLUGIN_ENABLE_TRACE OFF CACHE BOOL "Enable trace logging")
63-
64-
if (${QTHEIFIMAGEPLUGIN_ENABLE_TRACE})
65-
add_definitions(-DQTHEIFIMAGEPLUGIN_ENABLE_TRACE)
66-
endif ()
67-
68-
#
69-
# project source
70-
#
71-
72-
include_directories(
73-
BEFORE
74-
"${CMAKE_CURRENT_SOURCE_DIR}/src"
75-
"${CMAKE_CURRENT_BINARY_DIR}/src"
76-
)
77-
78-
file(GLOB sources src/*.cpp)
79-
80-
add_library(qtheifimageplugin MODULE ${sources})
81-
82-
target_link_libraries(
83-
qtheifimageplugin
84-
PRIVATE
85-
Qt5::Gui
86-
${libheif_LIBRARIES}
87-
)
88-
89-
#
90-
# installation
91-
#
92-
93-
# Use qmake to find plugin dir (adapted from lxqt-qtplugin)
94-
get_target_property(
95-
QT_QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION)
96-
97-
if (NOT QT_QMAKE_EXECUTABLE)
98-
message(FATAL_ERROR "qmake is not found.")
99-
endif ()
100-
101-
execute_process(
102-
COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_PLUGINS
103-
OUTPUT_VARIABLE QT_PLUGINS_DIR
104-
OUTPUT_STRIP_TRAILING_WHITESPACE)
105-
106-
if (QT_PLUGINS_DIR)
107-
message(STATUS "Qt5 plugin directory: " "${QT_PLUGINS_DIR}")
108-
else ()
109-
message(FATAL_ERROR "Qt5 plugin directory cannot be detected.")
110-
endif ()
111-
112-
# Prefix with DESTDIR if available to allow packaging
113-
if (ENV{DESTDIR} AND NOT ENV{DESTDIR} STREQUAL "")
114-
set(plugins_dir "$ENV{DESTDIR}${QT_PLUGINS_DIR}")
115-
else ()
116-
set(plugins_dir "${QT_PLUGINS_DIR}")
117-
endif ()
118-
119-
install(
120-
TARGETS qtheifimageplugin
121-
LIBRARY DESTINATION "${plugins_dir}/imageformats")
7+
add_subdirectory(src)
1228

9+
# vim:sw=2

src/CMakeLists.txt

+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
cmake_minimum_required(VERSION 3.5) # lowest version tried
2+
3+
set(CMAKE_CXX_STANDARD 14)
4+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
5+
set(CMAKE_CXX_EXTENSIONS OFF)
6+
7+
# make release build, if not specified
8+
# (from https://blog.kitware.com/cmake-and-the-default-build-type/)
9+
set(default_build_type "RelWithDebInfo")
10+
11+
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
12+
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Build type" FORCE)
13+
set_property(
14+
CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
15+
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
16+
endif ()
17+
18+
# compiler flags
19+
# TODO: separate GCC and Clang warnings; add more
20+
set(
21+
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
22+
-Wall \
23+
-Wextra \
24+
-Wshadow \
25+
-Wformat-nonliteral \
26+
-Wformat-security \
27+
-Wnon-virtual-dtor \
28+
")
29+
30+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og")
31+
32+
set(sanitizer_flags "-fsanitize=address -fsanitize=undefined")
33+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${sanitizer_flags}")
34+
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG
35+
"${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${sanitizer_flags}")
36+
37+
#
38+
# third-party libs
39+
#
40+
41+
# qt
42+
find_package(Qt5 COMPONENTS Core Gui REQUIRED)
43+
add_definitions(-DQT_NO_KEYWORDS)
44+
set(CMAKE_AUTOMOC ON)
45+
46+
# libheif
47+
find_package(PkgConfig)
48+
pkg_check_modules(libheif REQUIRED libheif>=1.2)
49+
50+
#
51+
# logging
52+
#
53+
54+
set(QTHEIFIMAGEPLUGIN_ENABLE_TRACE OFF CACHE BOOL "Enable trace logging")
55+
56+
if (${QTHEIFIMAGEPLUGIN_ENABLE_TRACE})
57+
add_definitions(-DQTHEIFIMAGEPLUGIN_ENABLE_TRACE)
58+
endif ()
59+
60+
#
61+
# project source
62+
#
63+
64+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
65+
66+
set(sources contextwriter.cpp iohandler.cpp plugin.cpp)
67+
68+
add_library(qtheifimageplugin MODULE ${sources})
69+
70+
target_link_libraries(
71+
qtheifimageplugin
72+
PRIVATE
73+
Qt5::Gui
74+
${libheif_LIBRARIES}
75+
)
76+
77+
#
78+
# installation
79+
#
80+
81+
# Use qmake to find plugin dir (adapted from lxqt-qtplugin)
82+
get_target_property(
83+
QT_QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION)
84+
85+
if (NOT QT_QMAKE_EXECUTABLE)
86+
message(FATAL_ERROR "qmake is not found.")
87+
endif ()
88+
89+
execute_process(
90+
COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_PLUGINS
91+
OUTPUT_VARIABLE QT_PLUGINS_DIR
92+
OUTPUT_STRIP_TRAILING_WHITESPACE)
93+
94+
if (QT_PLUGINS_DIR)
95+
message(STATUS "Qt5 plugin directory: " "${QT_PLUGINS_DIR}")
96+
else ()
97+
message(FATAL_ERROR "Qt5 plugin directory cannot be detected.")
98+
endif ()
99+
100+
# Prefix with DESTDIR if available to allow packaging
101+
if (ENV{DESTDIR} AND NOT ENV{DESTDIR} STREQUAL "")
102+
set(plugins_dir "$ENV{DESTDIR}${QT_PLUGINS_DIR}")
103+
else ()
104+
set(plugins_dir "${QT_PLUGINS_DIR}")
105+
endif ()
106+
107+
install(
108+
TARGETS qtheifimageplugin
109+
LIBRARY DESTINATION "${plugins_dir}/imageformats")
110+
111+
# vim:sw=2

0 commit comments

Comments
 (0)