Вам необходимо создать файл, похожий на config.h.in
. Что-то вроде
#cmakedefine HAVE_FEATURE_A @[email protected]
#cmakedefine HAVE_FEATURE_B @[email protected]
#cmakedefine HAVE_FEATURE_BITS @[email protected]
Тогда вы должны объявить переменные Feature_A_FOUND
, Feature_B_FOUND
, B_BITSIZE
в коде CMake и вызвать
configure_file(config.h.in config.h)
, который приведет к config.h файл, похожий на один из Autotools , Если переменная не найдена или установлена в false, строка будет прокомментирована. В противном случае значение будет вставлено. Предположим, Feature_A_FOUND=A-NOTFOUND
¸ Feature_B_FOUND=/usr/lib/b
, B_BITSIZE=64
, что приведет к
/* #undef HAVE_FEATURE_A @[email protected] */
#define HAVE_FEATURE_B /usr/lib/b
#define HAVE_FEATURE_BITS 64
Возможно HAVE_FEATURE_B лучше было бы определить как #cmakedefine01
, что приводит к 0 или 1 в зависимости от значения переменной.
В общем случае можно создать каждый файл config.h, созданный Autotools, поскольку CMake более гибкий. Но это требует больше работы, и вы не можете автоматически получить config.h, но вы должны сами написать .in-файл.
Документация: https://cmake.org/cmake/help/v3.6/command/configure_file.html
См [конкретных] (https://cmake.org/cmake/help/v3.0/command/configure_file.html) и [общий] (HTTP: // WWW. vtk.org/Wiki/CMake:How_To_Write_Platform_Checks). –
Возможный дубликат [CMake: как проверить файлы заголовков и библиотечные функции, например, в Autotools?) (Http://stackoverflow.com/questions/647892/cmake-how-to-check-header-files-and-library-functions -как-в-Autotools) – usr1234567