bir C++ 11 (/ 14/17), özelliği gerektirecek target_compile_features kullanabilir:
target_compile_features(target PRIVATE|PUBLIC|INTERFACE feature1 [feature2 ...])
CMAKE_CXX_KNOWN_FEATURES
listelenen bir özellik olarak feature1
ile. Eğer kamu API constexpr
kullanmak istiyorsanız Örneğin, şunları kullanabilirsiniz:
add_library(foo ...)
target_compile_features(foo PUBLIC cxx_constexpr)
Ayrıca seçenekler gibi özellikleri algılamasını sağlar WriteCompilerDetectionHeader
module bakmak ve geriye dönük uyumluluk sağlayan gerektiğini bazı özellikler için uygulama derleyici bunları desteklemiyorsa:
İşte
write_compiler_detection_header(
FILE foo_compiler_detection.h
PREFIX FOO
COMPILERS GNU MSVC
FEATURES cxx_constexpr cxx_nullptr
)
foo_compiler_detection.h
FOO_COMPILER_CXX_CONSTEXPR
kelime constexpr
varsa tanımlanan ile oluşturulacak bir dosya:
#include "foo_compiler_detection.h"
#if FOO_COMPILER_CXX_CONSTEXPR
// implementation with constexpr available
constexpr int bar = 0;
#else
// implementation with constexpr not available
const int bar = 0;
#endif
Üstelik FOO_CONSTEXPR
tanımlanacak ve özellik geçerli derleyici varsa constexpr
genişleyecektir. Aksi halde boş olacak.
FOO_NULLPTR
tanımlanacak ve geçerli derleyici için varsa, nullptr
'a genişler. Aksi halde bir uyumluluk uygulamasına genişleyecektir (ör. NULL
).
( )