У меня есть небольшая библиотека, которую я создал, которая стоит вместе, за исключением одного необязательного метода в классе, который требует Imagemagick. Поэтому я стараюсь, чтобы не компилировать этот метод, если на компьютере нет установленного Imagemagick; а не просто проваливается. Единственная проблема заключается в том, что заголовок будет по-прежнему определять этот метод (хотя он не был скомпилирован). Есть ли способ удалить этот метод из заголовка, используя Cmake или какой-либо другой подход?Cmake установить заголовок без определенного метода
0
A
ответ
1
Wrap определение в определении препроцессора:
#ifdef HAVE_IMAGEMAGICK
void myFunctionDefinition(void);
#endif
Затем в CMake, если ImageMagick найден, добавить определение проекта. CMake передаст это определение в командную строку компилятора, которая определит токен препроцессора.
IF(IMAGEMAGICK_FOUND) # or whatever CMake variable holds this info
ADD_DEFINITIONS(-DHAVE_IMAGEMAGICK)
ENDIF()
В качестве альтернативы, если у вас есть много таких определений, вы можете рассмотреть файл include для хранения всех этих конфигураций. Команда CMake CONFIGURE_FILE может затем развернуть все утверждения конфигурации всего файла сразу.
Смежные вопросы
- 1. CMake: установить без разрешающих зависимостей
- 2. cmake включить только заголовок библиотеки
- 3. конвертировать без использования предварительно определенного метода
- 4. CMake установить целевые зависимости
- 5. CMake установить в/бен
- 6. установить ошибку CMAKE linuxmint
- 7. cmake подкаталоги установить
- 8. Optix образец без Cmake
- 9. Как установить UISegmentedControl без метода вызова
- 10. Как установить cmake из источника, но без GUI (X11)
- 11. Установить заголовок UIButton с помощью одного вызова метода?
- 12. Как установить заголовок ActionBar из метода getView внутри baseAdapter
- 13. Как установить HTTP-заголовок при использовании метода Flex RemoteObject?
- 14. Могу ли я установить твиттер-заголовок с помощью метода getJSON?
- 15. Как указать cmake/automoc найти внешний заголовок
- 16. cmake не находит заголовок boost на linux
- 17. Уточнение определенного метода
- 18. Написание определенного общего метода
- 19. Как установить источник данных RDLC для возврата определенного метода
- 20. Какао: Как установить заголовок окна?
- 21. Как установить заголовок в контроллере?
- 22. .htaccess и заголовок HTTP для определенного файла
- 23. CMake установить в CMAKE_INSTALL_PREFIX корень
- 24. Как установить CMake на Cygwin?
- 25. Как установить GRAPHVIZ_GRAPH_HEADER в Cmake?
- 26. CMake: добавить «установить» цель «все»
- 27. Как установить cmake на windows
- 28. Пользовательский заголовок HTTP для определенного файла
- 29. Вызов определенного метода C++ из Objective C без объекта
- 30. Вызов определенного метода класса в Java (без полиморфизма)
Хотя это будет работать с созданием библиотеки, оно не удалит это объявление в заголовках. Таким образом, IDE по-прежнему обнаруживают существование этого метода, даже считают, что он определен. На данный момент я просто создал исключение и выбросил его, если его вызвали, когда Imagemagick не скомпилирован. Хороший ввод, хотя :) –