CMakeLists.txt 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. cmake_minimum_required(VERSION 3.0)
  2. project(target_compile_features)
  3. if (NOT CMAKE_CXX_COMPILE_FEATURES AND NOT CMAKE_C_COMPILE_FEATURES)
  4. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_dummy.cpp"
  5. "int main(int,char**) { return 0; }\n"
  6. )
  7. add_executable(target_compile_features "${CMAKE_CURRENT_BINARY_DIR}/test_dummy.cpp")
  8. return()
  9. endif()
  10. set(CMAKE_VERBOSE_MAKEFILE ON)
  11. if (CMAKE_C_COMPILE_FEATURES)
  12. add_executable(target_compile_features main.c)
  13. target_compile_features(target_compile_features
  14. PRIVATE c_restrict
  15. )
  16. add_library(lib_restrict lib_restrict.c)
  17. target_compile_features(lib_restrict
  18. PUBLIC c_restrict
  19. )
  20. add_executable(restrict_user restrict_user.c)
  21. target_link_libraries(restrict_user lib_restrict)
  22. endif()
  23. if (CMAKE_CXX_COMPILE_FEATURES)
  24. if (CMAKE_C_COMPILE_FEATURES)
  25. set(target_suffix _cxx)
  26. endif()
  27. add_executable(target_compile_features${target_suffix} main.cpp)
  28. target_compile_features(target_compile_features${target_suffix}
  29. PRIVATE cxx_auto_type
  30. )
  31. add_library(lib_auto_type lib_auto_type.cpp)
  32. target_compile_features(lib_auto_type
  33. PUBLIC cxx_auto_type
  34. )
  35. add_executable(lib_user lib_user.cpp)
  36. target_link_libraries(lib_user lib_auto_type)
  37. endif()