أي طريقة في CMake تتطلب من دول مجلس التعاون الخليجي الإصدار 4+?
سؤال
أنا باستخدام بعض الميزات التي يتم توفيرها في دول مجلس التعاون الخليجي v4+ وأود CMake أن تجد دول مجلس التعاون الخليجي v4 مترجم و إذا لم تجده بإرجاع خطأ تفيد دول مجلس التعاون الخليجي v4 مطلوب.
أي شخص لديه أي وحدات / الأفكار حول كيفية القيام بشيء ما مثل هذا ؟
شكرا
المحلول
استخدم الأمر try_compile () ومحاولة لترجمة البرنامج التالي
#if __GNUC__ != 4
#error
#endif
int main() { return 0; }
نصائح أخرى
وهناك مختلفة تماما طريقة (وليس بالضرورة أفضل) لتنفيذ التحقق من الإصدار دول مجلس التعاون الخليجي سيكون شيئا مثل:
if(CMAKE_COMPILER_IS_GNUCXX)
exec_program(
${CMAKE_CXX_COMPILER}
ARGS --version
OUTPUT_VARIABLE _compiler_output)
string(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]) .*" "\\1"
gcc_compiler_version ${_compiler_output})
message(STATUS "C++ compiler version: ${gcc_compiler_version} [${CMAKE_CXX_COMPILER}]")
if(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
message(FATAL_ERROR "foobar")
...
if(gcc_compiler_version VERSION_GREATER "4.5.99")
...
...
هناك قد يكون قريبا حل في cmake نفسها ، cf. http://cmake.3232098.n2.nabble.com/GCC-compiler-version-td7185771.html
الإصدارات المستقبلية من cmake قد تشمل اثنين من المتغيرات : CMAKE_C_COMPILER_VERSION و CMAKE_CXX_COMPILER_VERSION.
هالاس, أنا لم أر منهم حتى الآن في 2.8.8 التغيير.
يمكنني استخدام @cmaker حل الآن.
وهناك أيضا ملف toolchain، الذي هو مذكور على فتق يكي . التي تمكنك من تحديد toolchains المخصصة. انها تستخدم عادة لعبر تجميع، ولكن كنت استخدمه قبل الحصول على toolchains آخرين يعملون.