CMakeLists.txt 1.7 KB

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