CMakeLists.txt 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD
  2. "d0edc3af-4c50-42ea-a356-e2862fe7a444")
  3. cmake_minimum_required(VERSION 3.29)
  4. project(cxx_modules_import_std_export_no_std CXX)
  5. include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake")
  6. add_library(import_std_export_no_std)
  7. target_sources(import_std_export_no_std
  8. PRIVATE
  9. uses-std.cxx
  10. PUBLIC
  11. FILE_SET use_std TYPE CXX_MODULES FILES
  12. impl-uses-std.cxx)
  13. target_compile_features(import_std_export_no_std PUBLIC cxx_std_23)
  14. set_property(TARGET import_std_export_no_std
  15. PROPERTY
  16. CXX_MODULE_STD "$<BOOL:$<BUILD_LOCAL_INTERFACE:1>>")
  17. add_executable(main
  18. main.cxx)
  19. target_link_libraries(main PRIVATE import_std_export_no_std)
  20. install(TARGETS import_std_export_no_std
  21. EXPORT export
  22. ARCHIVE DESTINATION "lib"
  23. FILE_SET use_std DESTINATION "lib/cxx/miu")
  24. install(
  25. EXPORT export
  26. NAMESPACE CXXModules::
  27. DESTINATION "lib/cmake/import_std_export_no_std"
  28. FILE "import_std_export_no_std-targets.cmake")
  29. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/import_std_export_no_std-config.cmake"
  30. "include(\"\${CMAKE_CURRENT_LIST_DIR}/import_std_export_no_std-targets.cmake\")
  31. set(\${CMAKE_FIND_PACKAGE_NAME}_FOUND 1)
  32. ")
  33. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/import_std_export_no_std-config.cmake"
  34. DESTINATION "lib/cmake/import_std_export_no_std")
  35. add_test(NAME main COMMAND main)
  36. set(generator
  37. -G "${CMAKE_GENERATOR}")
  38. if (CMAKE_GENERATOR_TOOLSET)
  39. list(APPEND generator
  40. -T "${CMAKE_GENERATOR_TOOLSET}")
  41. endif ()
  42. if (CMAKE_GENERATOR_PLATFORM)
  43. list(APPEND generator
  44. -A "${CMAKE_GENERATOR_PLATFORM}")
  45. endif ()
  46. add_test(NAME import_std_export_no_std_build
  47. COMMAND
  48. "${CMAKE_COMMAND}"
  49. "-Dexpected_dir=${CMAKE_INSTALL_PREFIX}/lib/cxx/miu"
  50. "-Dimport_std_export_no_std_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/import_std_export_no_std"
  51. ${generator}
  52. -S "${CMAKE_CURRENT_SOURCE_DIR}/test"
  53. -B "${CMAKE_CURRENT_BINARY_DIR}/test")