mirror of
https://github.com/slint-ui/slint.git
synced 2025-09-28 21:04:47 +00:00
66 lines
2.5 KiB
CMake
66 lines
2.5 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
project(sixtyfps_cpptest LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
### BEGIN This should be moce in some file in api/sixtyfps-cpp/cmake
|
|
|
|
|
|
#FIXME: i guess this file need to be generated so it knows where to look
|
|
find_program(SIXTYFPS_COMPILER sixtyfps_compiler HINTS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../target/release
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../target/debug )
|
|
|
|
# FIXME that's not where all the things are
|
|
get_filename_component(_SIXTYFPS_TARGET_DIR ${SIXTYFPS_COMPILER} DIRECTORY)
|
|
|
|
|
|
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_COMPILER} ${_60_ABSOLUTE} > ${CMAKE_CURRENT_BINARY_DIR}/${_60_BASE_NAME}.h
|
|
DEPENDS ${_60_ABSOLUTE} ${SIXTYFPS_COMPILER}
|
|
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()
|
|
|
|
#FIXME: we need sixtyfps_internal.h somewhere else
|
|
file(GLOB _SIXTYFPS_INTERNAL_HEADER "${_SIXTYFPS_TARGET_DIR}/build/corelib-*/out")
|
|
|
|
add_library(sixtyfps SHARED IMPORTED)
|
|
set_target_properties(sixtyfps PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/../../api/sixtyfps-cpp/include;${_SIXTYFPS_INTERNAL_HEADER}"
|
|
IMPORTED_LOCATION
|
|
"${_SIXTYFPS_TARGET_DIR}/libcorelib${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
|
|
add_custom_target(ensure_sixtyfps_runtime_up_to_date
|
|
COMMAND cargo build --lib
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
add_dependencies(sixtyfps ensure_sixtyfps_runtime_up_to_date)
|
|
|
|
file(GLOB _SIXTYFPS_GL_INTERNAL_HEADER "${_SIXTYFPS_TARGET_DIR}/build/gl-*/out")
|
|
|
|
add_library(sixtyfps_gl SHARED IMPORTED)
|
|
set_target_properties(sixtyfps_gl PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES
|
|
"${_SIXTYFPS_GL_INTERNAL_HEADER}"
|
|
IMPORTED_LOCATION
|
|
"${_SIXTYFPS_TARGET_DIR}/libgl${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
|
|
target_link_libraries(sixtyfps_gl INTERFACE sixtyfps)
|
|
|
|
### END This should be moce in some file in api/sixtyfps-cpp/cmake
|
|
|
|
add_executable(hello main.cpp)
|
|
target_link_libraries(hello sixtyfps_gl)
|
|
sixtyfps_target_60_sources(hello hello.60)
|