|
|
|
cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
|
|
|
|
|
|
|
|
project(SystemIncludeDirectoriesPerLang)
|
|
|
|
|
|
|
|
add_library(c_interface INTERFACE)
|
|
|
|
set_target_properties(c_interface PROPERTIES
|
|
|
|
INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:C>:${CMAKE_CURRENT_SOURCE_DIR}>"
|
|
|
|
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:C>:${CMAKE_CURRENT_SOURCE_DIR}>"
|
|
|
|
)
|
|
|
|
target_compile_options(c_interface INTERFACE "$<$<COMPILE_LANG_AND_ID:C,GNU,Clang>:-Werror=unused-variable>;$<$<COMPILE_LANG_AND_ID:C,MSVC>:/we4101>")
|
|
|
|
|
|
|
|
add_library(cxx_interface INTERFACE)
|
|
|
|
set_target_properties(cxx_interface PROPERTIES
|
|
|
|
INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/cxx_system_include>"
|
|
|
|
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/cxx_system_include>"
|
|
|
|
)
|
|
|
|
target_compile_options(cxx_interface INTERFACE "$<$<COMPILE_LANG_AND_ID:CXX,GNU,Clang>:-Werror=unused-variable>;$<$<COMPILE_LANG_AND_ID:C,MSVC>:/we4101>")
|
|
|
|
|
|
|
|
# The C header must come before the C++ header for this test to smoke out the
|
|
|
|
# failure. The order of sources is how CMake determines the include cache
|
|
|
|
# and we need it to cache on the 'bad' language first
|
|
|
|
add_executable(consume_multi_lang_includes main.c smoke_out_includes.cxx)
|
|
|
|
target_link_libraries(consume_multi_lang_includes PRIVATE c_interface cxx_interface)
|