CMake: Fix installation

This commit is contained in:
Olivier Goffart 2020-10-07 18:20:22 +02:00
parent d771143f68
commit 07c4b6cb3d
2 changed files with 33 additions and 28 deletions

View file

@ -24,13 +24,9 @@ add_library(SixtyFPS::SixtyFPS ALIAS SixtyFPS)
target_link_libraries(SixtyFPS INTERFACE sixtyfps-rendering-backend-default)
target_compile_features(SixtyFPS INTERFACE cxx_std_17)
set(api_headers
sixtyfps.h
sixtyfps_properties.h
sixtyfps_signals.h
sixtyfps_string.h
vtable.h
)
file(GLOB api_headers RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/include/"
"${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
foreach(header IN LISTS api_headers)
set_property(TARGET SixtyFPS APPEND PROPERTY PUBLIC_HEADER include/${header})
endforeach()
@ -47,7 +43,8 @@ set(generated_headers
${CMAKE_CURRENT_BINARY_DIR}/generated_include/sixtyfps_default_backend_internal.h
)
file(GLOB generated_headers_dependencies "${CMAKE_CURRENT_SOURCE_DIR}/../../sixtyfps_runtime/corelib/*.rs")
file(GLOB generated_headers_dependencies
"${CMAKE_CURRENT_SOURCE_DIR}/../../sixtyfps_runtime/corelib/*.rs")
add_custom_target(
generated_headers_target
@ -71,22 +68,33 @@ target_include_directories(SixtyFPS INTERFACE
add_executable(SixtyFPS::sixtyfps_compiler ALIAS sixtyfps_compiler)
include(${CMAKE_CURRENT_LIST_DIR}/cmake/SixtyFPSMacro.cmake)
#FIXME: also export and install the compiler
export(TARGETS SixtyFPS sixtyfps-rendering-backend-default #sixtyfps_compiler
export(TARGETS SixtyFPS sixtyfps-rendering-backend-default
NAMESPACE SixtyFPS:: FILE "${CMAKE_BINARY_DIR}/lib/cmake/SixtyFPS/SixtyFPSTargets.cmake")
install(EXPORT SixtyFPSTargets NAMESPACE SixtyFPS:: DESTINATION lib/cmake/SixtyFPS)
install(TARGETS SixtyFPS sixtyfps-rendering-backend-default #sixtyfps_compiler
install(TARGETS SixtyFPS sixtyfps-rendering-backend-default
EXPORT SixtyFPSTargets LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include/sixtyfps)
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
get_target_property(SIXTYFPS_SHARED_LIB sixtyfps-rendering-backend-default-shared IMPORTED_LOCATION)
install(FILES ${SIXTYFPS_SHARED_LIB} TYPE LIB)
if (WIN32)
get_filename_component(SIXTYFPS_SHARED_LIB_DIR ${SIXTYFPS_SHARED_LIB} DIRECTORY)
get_filename_component(SIXTYFPS_SHARED_LIB_WE ${SIXTYFPS_SHARED_LIB} NAME_WLE)
install(FILES "${SIXTYFPS_SHARED_LIB_DIR}/${SIXTYFPS_SHARED_LIB_WE}.lib" TYPE LIB)
endif()
get_target_property(SIXTYFPS_COMPILER_PATH sixtyfps_compiler IMPORTED_LOCATION)
install(PROGRAMS ${SIXTYFPS_COMPILER_PATH} TYPE BIN)
configure_package_config_file("cmake/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
VERSION 0.0.1
COMPATIBILITY ExactVersion
)
install(FILES
@ -96,3 +104,4 @@ install(FILES
DESTINATION lib/cmake/SixtyFPS
)

View file

@ -17,21 +17,17 @@ if(_IMPORT_PREFIX STREQUAL "/")
set(_IMPORT_PREFIX "")
endif()
foreach(internal_lib IN ITEMS @internal_libs@)
add_library(${internal_lib} SHARED IMPORTED)
set(fn "${internal_lib}${CMAKE_SHARED_LIBRARY_SUFFIX}")
# Don't look in lib when we're inside a cargo tree, as cargo doesn't use a lib/ sub-dir.
if(EXISTS "${_IMPORT_PREFIX}/${fn}")
else()
set(fn "lib/${fn}")
endif()
set_property(TARGET ${internal_lib} PROPERTY IMPORTED_LOCATION "${_IMPORT_PREFIX}/${fn}")
add_library(sixtyfps-rendering-backend-default-shared SHARED IMPORTED)
get_filename_component(SIXTYFPS_SHARED_LIB @SIXTYFPS_SHARED_LIB@ NAME_WLE)
set_property(TARGET sixtyfps-rendering-backend-default-shared PROPERTY IMPORTED_LOCATION
"${_IMPORT_PREFIX}/@CMAKE_INSTALL_LIBDIR@/${SIXTYFPS_SHARED_LIB}${CMAKE_SHARED_LIBRARY_SUFFIX}")
if (WIN32)
set_property(TARGET ${internal_lib} PROPERTY IMPORTED_IMPLIB "${_IMPORT_PREFIX}/${fn}.lib")
set_property(TARGET ${internal_lib} PROPERTY IMPORTED_IMPLIB
"${_IMPORT_PREFIX}/@CMAKE_INSTALL_LIBDIR@/${SIXTYFPS_SHARED_LIB}.lib")
endif()
set(fn)
endforeach()
add_executable(SixtyFPS::sixtyfps_compiler IMPORTED GLOBAL)
set_target_properties(SixtyFPS::sixtyfps_compiler PROPERTIES IMPORTED_LOCATION "${_IMPORT_PREFIX}/@CMAKE_INSTALL_BINDIR@/sixtyfps_compiler${CMAKE_EXECUTABLE_SUFFIX}")
set(_IMPORT_PREFIX)