Files
iZo/CMakeLists.txt

71 lines
2.1 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(iZo VERSION 0.1.0 LANGUAGES CXX)
add_library(izo STATIC)
add_library(iZo::izo ALIAS izo)
target_sources(izo
PRIVATE
src/dialogs.cpp
$<$<PLATFORM_ID:Windows>:src/dialogs_windows.cpp>
$<$<PLATFORM_ID:Linux>:src/dialogs_linux.cpp>
)
target_include_directories(izo
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
target_compile_features(izo PUBLIC cxx_std_17)
set_target_properties(izo PROPERTIES
CXX_EXTENSIONS OFF
OUTPUT_NAME izo
)
if(WIN32)
target_compile_definitions(izo PRIVATE UNICODE _UNICODE WIN32_LEAN_AND_MEAN NOMINMAX)
target_link_libraries(izo PRIVATE ole32 shell32 uuid)
elseif(UNIX AND NOT APPLE)
# No link-time desktop dependency. The Linux backend discovers zenity or
# kdialog at runtime so applications do not inherit GTK or Qt dependencies.
else()
message(FATAL_ERROR "iZo currently supports Windows and Linux")
endif()
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
install(TARGETS izo EXPORT iZoTargets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT iZoTargets
FILE iZoTargets.cmake
NAMESPACE iZo::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iZo
)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/iZoConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
configure_package_config_file(
cmake/iZoConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/iZoConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iZo
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/iZoConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/iZoConfigVersion.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iZo
)
option(IZO_BUILD_EXAMPLE "Build the iZo example program" OFF)
if(IZO_BUILD_EXAMPLE)
add_executable(izo_example examples/dialogs.cpp)
target_link_libraries(izo_example PRIVATE iZo::izo)
endif()