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)