add_definitions добавляет определение, которое фиксируется во время выполнения cmake (not make). Как определить их при выполнении make (not cmake)? Значение определения будет выводить пользовательскую команду.Как определить флаги компилятора во время компиляции с помощью CMake?
ответ
Вот пример косметическим файла:
.SUFFIXES: .c.o CC = cc INCLUDE = -I/usr/include -I/usr/sys/include # Comment out one or the other, mutually exclusive CFLAGS = -g # Debugging info #CFLAGS = -O2 # Optimize code LIBS = -L/usr/lib -L/usr/sys/lib -lsome_lib1 -lsome_lib2 # Debugging libs #LIBS = -L/usr/lib # Release FILES = mysource.o myroutines1.o myroutines2.o APP = myapp .c.o: $(CC) $(INCLUDE) $(CFLAGS) -c $< all : $(APP) $(APP) : $(FILES) $(CC) -o [email protected] $(FILES) $(LIBS) $(CFLAGS) clobber : clean mrproper clean: rm -rf $(FILES) mrproper: rm -rf $(APP)
Обратите внимание, как флаг CFLAGS
определен. Закомментируйте другой в зависимости, если вы делаете отладки или выпустить сборку ..
Приведенный выше пример для косметическим файла из моего учебника для создания исполняемого файла с именем myapp
, который компонует из mysource.c
, myroutines1.c
и myroutines2.c
. И это показывает, как делает достаточно умным, чтобы создать исполняемый файл без перекомпиляции.
Примечание Файл makefile имеет ориентацию unix/linux и очень строгий на вкладках/пробелах, которые не отображаются в примере выше!
Надеюсь, это поможет, С уважением, Tom.
Я не уверен, что понял вопрос, но ...
Может быть, вы могли бы использовать дополнительный макрос для обеспечения C флаги компилятора командной строки, например:
CFLAGS= <whatever>
CFLAGS2= #nothing
.c.o:
$(CC) $(INCLUDE) $(CFLAGS) $(CFLAGS2) -c $<
Тогда, когда ты введите команду make
, введите аргумент командной строки "CFLAGS2=xxx"
, который переопределяет настройку по умолчанию в make-файле.
Update
Да, я не понял вопрос, что ОП в. Так любезно пренебрегайте.
@Loadmaster: Я сделал то же самое здесь, но получил вниз, так как я не понимаю вопрос OP - он сказал «когда make (not cmake) исполнен?» ... – t0mm13b
Вопрос о cmake , CMake генерирует make-файл на платформе linux, поэтому я не могу напрямую его модифицировать. –
@ Lukasz Lew: Ahh .... неудивительно ... я получил downvoted ... lol ... – t0mm13b
Вы можете найти некоторые полезные приемы здесь: «Как определить их, когда делают (не CMake) выполняется» How to run a command at compile time within Makefile generated by CMake?
- 1. Как определить флаги компиляции во время компиляции на OS/X?
- 2. CMake переопределять собственные флаги компилятора
- 3. Флаги компиляции и время компиляции
- 4. Как определить общее значение во время компиляции с помощью Modelsim?
- 5. Как определить «строгий псевдоним» во время компиляции?
- 6. Определить значения во время компиляции?
- 7. Обнаружение версий компилятора во время компиляции
- 8. Как определить объявление класса во время компиляции?
- 9. CMake: как добавить флаги компилятора в компилятор не по умолчанию
- 10. Как определить версию DbgHelp во время компиляции?
- 11. Как определить WP8 во время компиляции
- 12. Как определить use_frameworks! во время компиляции
- 13. Как определить тривиальный деструктор во время компиляции?
- 14. xcode: как определить sdk во время компиляции
- 15. Определяет время компиляции CMake
- 16. Переопределить флаги компиляции GCC
- 17. Флаги компилятора Objective-C
- 18. Создание проекта Xcode из Cmake содержит нежелательные флаги компилятора
- 19. Как добавить аргументы компилятора с помощью CMake?
- 20. CMake Fortran-зависимые флаги
- 21. Как определить, поддерживается ли constexpr во время компиляции
- 22. Определить флаги компиляции (C++ 11 и оптимизация) с помощью макроса
- 23. Определить #defined длину строки во время компиляции
- 24. cmake: Как отлаживать плохие флаги
- 25. Как установить определенные флаги компилятора для конкретной цели в конкретной конфигурации сборки с помощью CMake?
- 26. CMake: Установить флаги компилятора, которые могут быть изменены пользователем.
- 27. Как установить флаги компилятора для групп файлов в CMake?
- 28. Как я могу определить определенные функции RTL во время компиляции?
- 29. Как определить значение макроса во время компиляции в C?
- 30. правильно настроить флаги компоновщика с помощью CMake
Не понимаю, почему это было downvoted как ОП ясно сказано другими словами, как определить их в make-файле, это было мое понимание? Поправьте меня, если я неправильно понял? – t0mm13b
Я не ОП, и это немного поздно ... но ... Я полагаю, что OP (как и я) ищет команду CMake, которая реализует эту логику в автоматически созданных Makefiles. Ручное редактирование Make-файлов не является вариантом. –
@MattB: Ох ... забыли об этом ... слишком поздно !!! Я знаю, что есть CMake GUI .. не так много ответа, но больше точки в направлении, чтобы увидеть, есть ли опция в CMake GUI, чтобы сделать это для вас и посмотреть, что он генерирует ... – t0mm13b