CMakeLists.txt 1.7 KB

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