CMakeLists.txt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. cmake_minimum_required(VERSION 3.10)
  2. if(POLICY CMP0129)
  3. cmake_policy(SET CMP0129 NEW)
  4. endif()
  5. project(target_compile_options)
  6. add_executable(target_compile_options
  7. "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
  8. )
  9. target_compile_options(target_compile_options
  10. PRIVATE $<$<CXX_COMPILER_ID:AppleClang,IBMClang,CrayClang,Clang,GNU,LCC>:-DMY_PRIVATE_DEFINE>
  11. PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC>:-DMY_PUBLIC_DEFINE>
  12. PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
  13. INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC>:-DMY_INTERFACE_DEFINE>
  14. INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
  15. )
  16. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
  17. target_compile_definitions(target_compile_options
  18. PRIVATE
  19. "DO_GNU_TESTS"
  20. )
  21. elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  22. target_compile_definitions(target_compile_options
  23. PRIVATE
  24. "DO_CLANG_TESTS"
  25. )
  26. endif()
  27. add_executable(consumer
  28. "${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp"
  29. )
  30. target_sources(consumer PRIVATE
  31. "${CMAKE_CURRENT_SOURCE_DIR}/consumer.c"
  32. )
  33. target_compile_options(consumer
  34. PRIVATE
  35. -DCONSUMER_LANG_$<COMPILE_LANGUAGE>
  36. -DLANG_IS_CXX=$<COMPILE_LANGUAGE:CXX>
  37. -DLANG_IS_C=$<COMPILE_LANGUAGE:C>
  38. )
  39. if(CMAKE_GENERATOR MATCHES "Visual Studio")
  40. target_compile_definitions(consumer
  41. PRIVATE TEST_LANG_DEFINES_FOR_VISUAL_STUDIO
  42. )
  43. endif()
  44. target_compile_options(consumer
  45. PRIVATE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
  46. )
  47. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
  48. target_compile_definitions(consumer
  49. PRIVATE
  50. "DO_GNU_TESTS"
  51. )
  52. elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  53. target_compile_definitions(consumer
  54. PRIVATE
  55. "DO_CLANG_TESTS"
  56. )
  57. endif()
  58. # Test no items
  59. target_compile_options(consumer
  60. PRIVATE
  61. )