реклама на сайте
подробности

 
 
> Makefile, Растолкуйте по CFLAGS
uriy
сообщение Apr 27 2011, 07:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Ковыряюсь в проектах на ucLinux.
Куча непонятных вещей в Makefile
Среди них параметры для переменной CFLAGS.
Например такие:
Код
CFLAGS += -DUNIX -DUPLOADDIR='"/usr/tmp"'

При этом в си файле имеется следующая строчка
Код
uploadfname = (char *)malloc(strlen(UPLOADDIR)+strlen(entry.value)+2);

UPLOADDIR берется из Makefile т.к. в проекте определен другой путь.
Код
#ifndef UPLOADDIR
#define UPLOADDIR "/tmp"
#endif

Каким образом из Makefile переменная передается в си файлы. И что за загодочная буква D в начале?

Следующий пример из другого проекта:
Код
CFLAGS = @CFLAGS@ -DUSE_AUTH

В си файлах имеется:
Код
#ifdef USE_AUTH
    { "Auth", S2A, c_add_auth, NULL },
#endif

Но в этом проекте USE_AUTH не передается в си файлы. Я затолкал в один из хидеров #define USE_AUTH.
Думаю что это равнозначно. Прав я или нет? И почему параметр не передался. Куда копать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
andrew_b
сообщение Apr 27 2011, 07:13
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



CFLAGS -- это опции gcc для компиляции. Соответственно, -D это флаг gcc. Смотрите info gcc или man gcc.

Также читайте про autotools: autoconf и automake. Именно они генерят Makefile из configure.ac и Makefile.am.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 27 2011, 10:28
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(uriy @ Apr 27 2011, 11:04) *
Но в этом проекте USE_AUTH не передается в си файлы. Я затолкал в один из хидеров #define USE_AUTH.
Думаю что это равнозначно. Прав я или нет? И почему параметр не передался. Куда копать?

-D определяет макро для компилятора. В первом случае у Вас определен путь к файлу, если он не определен, то используется путь по умолчанию. Во втором случае определено макро и при его наличии вставляется некоторый дополнительный код в файл. Это обычное применение.
andrew_b посоветовал, что читать. Добавлю, что в сети есть переводы на русский документации по gcc.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
uriy
сообщение Apr 28 2011, 04:57
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



я уже почитал и понял. спасибо
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 22:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01726 секунд с 7
ELECTRONIX ©2004-2016