add_library(empty1 empty.cpp) add_library(empty2 INTERFACE) add_library(empty3 INTERFACE) target_compile_features(empty3 INTERFACE cxx_static_assert) target_link_libraries(empty1 $<$:empty2> empty3 ) # This, or populating the COMPILE_FEATURES property with a feature in the # same standard as cxx_nullptr, solves the cycle above. set_property(TARGET empty1 PROPERTY CXX_STANDARD 11)