CMake: Äquivalent zu AC_CHECK_FUNCS()

English Deutsch

Mit automake/m4 in configure.ac verwenden Sie eine Syntax wie

configure.ac
AC_CHECK_FUNCS(atan2)

was HAVE_FDATASYNC definiert, falls die Funktion verfügbar ist.

In CMake können Sie check_symbol_exists() für denselben Zweck wie folgt verwenden:

CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
include(CheckSymbolExists)

# Definition ausführbar
add_executable(myexe main.c)

# atan2 erfordert das Linken der Mathematikbibliothek
list(APPEND CMAKE_REQUIRED_LIBRARIES m)
check_symbol_exists(atan2 math.h HAVE_ATAN2)

# Compile-Definitionen hinzufügen, wenn wir die Bibliothek haben
if(HAVE_ATAN2)
    target_compile_definitions(myexe PRIVATE -DHAVE_ATAN2)
endif()

Beachten Sie, dass check_symbol_exists() nicht automatisch ein Präprozessor-Define hinzufügt, sondern Sie dies manuell erledigen müssen (siehe den letzten Block im obigen Code). Während dies auf den ersten Blick weniger komfortabel erscheinen mag, bietet dieser Ansatz viel mehr Flexibilität beim Umgang mit fehlenden oder verfügbaren Funktionen.

Siehe die CMake check_symbol_exists() Dokumentation für weitere Details.


Check out similar posts by category: CMake