Export: Populate INTERFACE_COMPILE_FEATURES property.
This commit is contained in:
parent
8ed59fc207
commit
9eaf375598
@ -85,6 +85,9 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
|
|||||||
this->PopulateInterfaceProperty("INTERFACE_AUTOUIC_OPTIONS", te,
|
this->PopulateInterfaceProperty("INTERFACE_AUTOUIC_OPTIONS", te,
|
||||||
cmGeneratorExpression::BuildInterface,
|
cmGeneratorExpression::BuildInterface,
|
||||||
properties, missingTargets);
|
properties, missingTargets);
|
||||||
|
this->PopulateInterfaceProperty("INTERFACE_COMPILE_FEATURES", te,
|
||||||
|
cmGeneratorExpression::BuildInterface,
|
||||||
|
properties, missingTargets);
|
||||||
this->PopulateInterfaceProperty("INTERFACE_POSITION_INDEPENDENT_CODE",
|
this->PopulateInterfaceProperty("INTERFACE_POSITION_INDEPENDENT_CODE",
|
||||||
te, properties);
|
te, properties);
|
||||||
const bool newCMP0022Behavior =
|
const bool newCMP0022Behavior =
|
||||||
|
@ -149,6 +149,10 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
|
|||||||
te,
|
te,
|
||||||
cmGeneratorExpression::InstallInterface,
|
cmGeneratorExpression::InstallInterface,
|
||||||
properties, missingTargets);
|
properties, missingTargets);
|
||||||
|
this->PopulateInterfaceProperty("INTERFACE_COMPILE_FEATURES",
|
||||||
|
te,
|
||||||
|
cmGeneratorExpression::InstallInterface,
|
||||||
|
properties, missingTargets);
|
||||||
|
|
||||||
const bool newCMP0022Behavior =
|
const bool newCMP0022Behavior =
|
||||||
te->GetPolicyStatusCMP0022() != cmPolicies::WARN
|
te->GetPolicyStatusCMP0022() != cmPolicies::WARN
|
||||||
|
@ -23,7 +23,10 @@ set_property(TARGET sharedlib PROPERTY INTERFACE_COMPILE_DEFINITIONS "SHAREDLIB_
|
|||||||
add_library(sharediface INTERFACE)
|
add_library(sharediface INTERFACE)
|
||||||
target_link_libraries(sharediface INTERFACE sharedlib)
|
target_link_libraries(sharediface INTERFACE sharedlib)
|
||||||
|
|
||||||
install(TARGETS headeronly sharediface
|
add_library(use_auto_type INTERFACE)
|
||||||
|
target_compile_features(use_auto_type INTERFACE cxx_auto_type)
|
||||||
|
|
||||||
|
install(TARGETS headeronly sharediface use_auto_type
|
||||||
EXPORT expInterface
|
EXPORT expInterface
|
||||||
)
|
)
|
||||||
install(TARGETS sharedlib
|
install(TARGETS sharedlib
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
cmake_minimum_required (VERSION 2.7.20090711)
|
cmake_minimum_required (VERSION 2.7.20090711)
|
||||||
|
cmake_policy(SET CMP0025 NEW)
|
||||||
project(Import C CXX)
|
project(Import C CXX)
|
||||||
|
|
||||||
# Import everything in a subdirectory.
|
# Import everything in a subdirectory.
|
||||||
|
@ -40,6 +40,23 @@ macro(do_try_compile prefix)
|
|||||||
if(NOT ${prefix}IFACE_TRY_COMPILE)
|
if(NOT ${prefix}IFACE_TRY_COMPILE)
|
||||||
message(SEND_ERROR "${prefix} try_compile with IMPORTED INTERFACE target failed!\n\n${OUTPUT}")
|
message(SEND_ERROR "${prefix} try_compile with IMPORTED INTERFACE target failed!\n\n${OUTPUT}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_auto_type;")
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES ${prefix}::use_auto_type)
|
||||||
|
check_cxx_source_compiles(
|
||||||
|
"
|
||||||
|
int main(int,char**)
|
||||||
|
{
|
||||||
|
auto value = 0;
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
" ${prefix}IMPORTED_IFACE_CONSTEXPR)
|
||||||
|
|
||||||
|
if(NOT ${prefix}IMPORTED_IFACE_CONSTEXPR)
|
||||||
|
message(SEND_ERROR "${prefix} try_compile with IMPORTED INTERFACE target failed!\n\n${OUTPUT}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
do_try_compile(bld)
|
do_try_compile(bld)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user