CMakeLists.txt 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD
  2. "0e5b6991-d74f-4b3d-a41c-cf096e0b2508")
  3. cmake_minimum_required(VERSION 3.29)
  4. project(cxx_modules_import_std_not_in_export CXX)
  5. include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake")
  6. set(CMAKE_CXX_MODULE_STD 1)
  7. add_library(import_std_not_in_export)
  8. target_sources(import_std_not_in_export
  9. PUBLIC
  10. FILE_SET use_std TYPE CXX_MODULES FILES
  11. uses-std.cxx)
  12. target_compile_features(import_std_not_in_export PUBLIC cxx_std_23)
  13. add_executable(main
  14. main.cxx)
  15. target_link_libraries(main PRIVATE import_std_not_in_export)
  16. install(TARGETS import_std_not_in_export
  17. EXPORT export
  18. ARCHIVE DESTINATION "lib"
  19. FILE_SET use_std DESTINATION "lib/cxx/miu")
  20. install(
  21. EXPORT export
  22. NAMESPACE CXXModules::
  23. DESTINATION "lib/cmake/import_std_not_in_export"
  24. FILE "import_std_not_in_export-targets.cmake")
  25. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/import_std_not_in_export-config.cmake"
  26. "include(\"\${CMAKE_CURRENT_LIST_DIR}/import_std_not_in_export-targets.cmake\")
  27. set(\${CMAKE_FIND_PACKAGE_NAME}_FOUND 1)
  28. ")
  29. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/import_std_not_in_export-config.cmake"
  30. DESTINATION "lib/cmake/import_std_not_in_export")
  31. add_test(NAME main COMMAND main)
  32. set(generator
  33. -G "${CMAKE_GENERATOR}")
  34. if (CMAKE_GENERATOR_TOOLSET)
  35. list(APPEND generator
  36. -T "${CMAKE_GENERATOR_TOOLSET}")
  37. endif ()
  38. if (CMAKE_GENERATOR_PLATFORM)
  39. list(APPEND generator
  40. -A "${CMAKE_GENERATOR_PLATFORM}")
  41. endif ()
  42. add_test(NAME import_std_not_in_export_build
  43. COMMAND
  44. "${CMAKE_COMMAND}"
  45. "-Dexpected_dir=${CMAKE_INSTALL_PREFIX}/lib/cxx/miu"
  46. "-Dimport_std_not_in_export_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/import_std_not_in_export"
  47. ${generator}
  48. -S "${CMAKE_CURRENT_SOURCE_DIR}/test"
  49. -B "${CMAKE_CURRENT_BINARY_DIR}/test")