mirror of
https://github.com/slint-ui/slint.git
synced 2025-10-01 06:11:16 +00:00
Refactor the cmake C++ build
This commit is contained in:
parent
d582f5b60f
commit
8b02568b4b
13 changed files with 228 additions and 410 deletions
|
@ -1,86 +0,0 @@
|
|||
# LICENSE BEGIN
|
||||
# This file is part of the SixtyFPS Project -- https://sixtyfps.io
|
||||
# Copyright (c) 2020 Olivier Goffart <olivier.goffart@sixtyfps.io>
|
||||
# Copyright (c) 2020 Simon Hausmann <simon.hausmann@sixtyfps.io>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
# This file is also available under commercial licensing terms.
|
||||
# Please contact info@sixtyfps.io for more information.
|
||||
# LICENSE END
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(SixtyFPS LANGUAGES CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
add_library(SixtyFPS INTERFACE)
|
||||
|
||||
foreach(lib_path IN LISTS SIXTYFPS_INTERNAL_LIBS)
|
||||
get_filename_component(lib_name "${lib_path}" NAME_WE)
|
||||
|
||||
add_library(${lib_name} SHARED IMPORTED)
|
||||
set_property(TARGET ${lib_name} PROPERTY IMPORTED_LOCATION "${lib_path}")
|
||||
if (WIN32)
|
||||
set_property(TARGET ${lib_name} PROPERTY IMPORTED_IMPLIB "${lib_path}.lib")
|
||||
endif ()
|
||||
|
||||
target_link_libraries(SixtyFPS INTERFACE ${lib_name})
|
||||
list(APPEND internal_libs ${lib_name})
|
||||
|
||||
install(FILES ${lib_path} TYPE LIB)
|
||||
endforeach()
|
||||
|
||||
|
||||
if (DEFINED SIXTYFPS_EXTERNAL_LIBS)
|
||||
target_link_libraries(SixtyFPS INTERFACE ${SIXTYFPS_EXTERNAL_LIBS})
|
||||
endif()
|
||||
|
||||
set(api_headers
|
||||
sixtyfps.h
|
||||
sixtyfps_properties.h
|
||||
sixtyfps_signals.h
|
||||
sixtyfps_string.h
|
||||
vtable.h
|
||||
)
|
||||
foreach(header IN LISTS api_headers)
|
||||
set_property(TARGET SixtyFPS APPEND PROPERTY PUBLIC_HEADER ../include/${header})
|
||||
endforeach()
|
||||
|
||||
file(GLOB_RECURSE generated_headers RELATIVE_PATH "${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/include/*.h")
|
||||
|
||||
foreach(header IN LISTS generated_headers)
|
||||
set_property(TARGET SixtyFPS APPEND PROPERTY PUBLIC_HEADER ${header})
|
||||
endforeach()
|
||||
|
||||
target_include_directories(SixtyFPS INTERFACE
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
|
||||
$<INSTALL_INTERFACE:include/sixtyfps>
|
||||
)
|
||||
|
||||
export(TARGETS SixtyFPS NAMESPACE SixtyFPS:: FILE "${CMAKE_BINARY_DIR}/lib/cmake/SixtyFPS/SixtyFPSTargets.cmake")
|
||||
|
||||
install(EXPORT SixtyFPSTargets NAMESPACE SixtyFPS:: DESTINATION lib/cmake/SixtyFPS)
|
||||
|
||||
install(TARGETS SixtyFPS
|
||||
EXPORT SixtyFPSTargets
|
||||
LIBRARY DESTINATION lib
|
||||
PUBLIC_HEADER DESTINATION include/sixtyfps
|
||||
)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
configure_package_config_file("SixtyFPSConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/SixtyFPS/SixtyFPSConfig.cmake" INSTALL_DESTINATION lib/cmake/SixtyFPS)
|
||||
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/SixtyFPS/SixtyFPSConfigVersion.cmake
|
||||
VERSION 1.0.0
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/SixtyFPS/SixtyFPSConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/SixtyFPS/SixtyFPSConfigVersion.cmake"
|
||||
DESTINATION lib/cmake/SixtyFPS
|
||||
)
|
|
@ -36,3 +36,4 @@ endforeach()
|
|||
set(_IMPORT_PREFIX)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/SixtyFPSTargets.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/SixtyFPSMacro.cmake")
|
||||
|
|
25
api/sixtyfps-cpp/cmake/SixtyFPSMacro.cmake
Normal file
25
api/sixtyfps-cpp/cmake/SixtyFPSMacro.cmake
Normal file
|
@ -0,0 +1,25 @@
|
|||
# LICENSE BEGIN
|
||||
# This file is part of the SixtyFPS Project -- https://sixtyfps.io
|
||||
# Copyright (c) 2020 Olivier Goffart <olivier.goffart@sixtyfps.io>
|
||||
# Copyright (c) 2020 Simon Hausmann <simon.hausmann@sixtyfps.io>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
# This file is also available under commercial licensing terms.
|
||||
# Please contact info@sixtyfps.io for more information.
|
||||
# LICENSE END
|
||||
|
||||
function(SIXTYFPS_TARGET_60_SOURCES target)
|
||||
foreach (it IN ITEMS ${ARGN})
|
||||
get_filename_component(_60_BASE_NAME ${it} NAME_WE)
|
||||
get_filename_component(_60_ABSOLUTE ${it} REALPATH BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_60_BASE_NAME}.h
|
||||
COMMAND SixtyFPS::sixtyfps_compiler ${_60_ABSOLUTE} > ${CMAKE_CURRENT_BINARY_DIR}/${_60_BASE_NAME}.h
|
||||
DEPENDS ${_60_ABSOLUTE}
|
||||
COMMENT "Running sixtyfps_compiler on ${it}")
|
||||
target_sources(${target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${_60_BASE_NAME}.h)
|
||||
endforeach()
|
||||
# FIXME: DO WE NEED THIS HERE?
|
||||
target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endfunction()
|
Loading…
Add table
Add a link
Reference in a new issue