Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> cmake 
V
    Опции темы
GrayCardinal
Дата 21.5.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 7
Всего: 58



Перешёл на смаке.Душа ликует. Полностью отказался от AAP и Scons. Однако возникла трабла. 
Имею :
Цитата

add_library (gclib2 SHARED < файлы >)

Так вот. Каким макаром можно собрать означенную лайбу с отключенной оптимизацией (непонятно какой) и включенной отладкой ? (-g3)



Это сообщение отредактировал(а) GrayCardinal - 21.5.2008, 15:55


--------------------
PM MAIL WWW   Вверх
nickless
Дата 22.5.2008, 17:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 18
Всего: 181



Дебаг/релиз переключается обычно переменной CMAKE_BUILD_TYPE, типа
Код

cmake -DCMAKE_BUILD_TYPE=Debug


Флаги находятся в CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG, еще можно добавлять их как дефайны в add_definitions()
Код

set(CMAKE_CXX_FLAGS_RELEASE     "-DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG       "-UNDEBUG -g3")
add_definitions(-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -D_REENTRANT -DQT_NO_STL)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -О2 -pipe")


Еще есть set_target_properties()
Код

set(ALL_LDFLAGS     "-Wl,--as-needed")
set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "${ALL_LDFLAGS}")


Обычные переменные окружения вроде CXXFLAGS LDFLAGS он сам использует где положено. smile 

Сделай где-нибудь
Код

message("
Configuration
-------------
CMAKE_BUILD_TYPE        = ${CMAKE_BUILD_TYPE}
CXXFLAGS                = $ENV{CXXFLAGS}
CMAKE_CXX_FLAGS         = ${CMAKE_CXX_FLAGS}
LDFLAGS                 = $ENV{LDFLAGS}
CMAKE_EXE_LINKER_FLAGS  = ${CMAKE_EXE_LINKER_FLAGS}
CMAKE_INSTALL_PREFIX    = ${CMAKE_INSTALL_PREFIX}
")

будет виднее, что там задефайнено...

Это сообщение отредактировал(а) nickless - 22.5.2008, 17:02


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
GrayCardinal
Дата 22.5.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 7
Всего: 58



nickless, 
Блакогадрю, очень помог  smile 


--------------------
PM MAIL WWW   Вверх
En_t_end
Дата 23.6.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Кто генерит make'и данной тулзой расскажите о минусах.
PM MAIL ICQ Skype GTalk Jabber   Вверх
nickless
Дата 24.6.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 18
Всего: 181



Цитата(En_t_end @  23.6.2008,  19:14 Найти цитируемый пост)
расскажите о минусах

Мне пока не приходилось сталкиватся с большими минусами, cmake умеет достаточно для моих целей (в scons например пришлось немного дописывать и допиливать).
Из минусов, на вскидку
1. синтаксис их языка простой, но об него ИМХО можно сломать пальцы
2. сложно/не удобно сделать что-либо не связаное с компилированием, линковкой, установкой итд. В принципе это правильно, но иногда хочется добавить вывод какой-нибудь интересной статистики итд. smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
En_t_end
Дата 25.6.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



А существует ли толковая документация по сабжу ? man и doc'и от создателей читал.
PM MAIL ICQ Skype GTalk Jabber   Вверх
nickless
Дата 28.6.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 18
Всего: 181



Есть еще книга, но чем она лучше всей остальной документации не знаю, документации, вики и примеры билд-скриптов из программ его использующих мне вполне хватает.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
En_t_end
Дата 29.6.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



nickless, tnx
PM MAIL ICQ Skype GTalk Jabber   Вверх
Lych
Дата 24.7.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Привет всем!

Столкнулся с такой проблемой:
  Нужно чтобы CMake добавлял разные пути результата сборки проекта для Debug и Release.

Нашел только как задать этот параметр для всех целей:
Код

set( LIBRARY_OUTPUT_PATH $ENV{IVRoot}/_Win32_Debug )


При этом он сам добавляет в конец .../_Win32_Debug /Debug/...., .../_Win32_Debug /Release/.... и т. д.

Как сделать так, чтобы он сам не дописывал путь, а в Debug и Release были разные пути, те которые нужны мне?


Это сообщение отредактировал(а) Lych - 24.7.2008, 11:17
PM MAIL   Вверх
bilbobagginz
Дата 24.7.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 28
Всего: 317



я так понимаю что вы работаете с Windows. проблема, с которой вы пытаетесь бороться - зависит от ОС, и среды. вы ошиблись разделом.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Lych
Дата 24.7.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



to bilbobagginz

тема то CMake?
я использую CMake как раз для того чтобы не зависеть от среды и оси

не только Windows...проект кросплатформенный...
в часности для Linuх пути должны быть:
.../_Linux32_Debug /
.../_Linux32_Release/



Это сообщение отредактировал(а) Lych - 24.7.2008, 12:09
PM MAIL   Вверх
bilbobagginz
Дата 24.7.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 28
Всего: 317



вопрос: а почему вам не подходит так:
Код

set( LIBRARY_OUTPUT_PATH $ENV{IVRoot}/_Win32_ )

?



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Lych
Дата 25.7.2008, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Из-за особенностей проекта. Дебажные и релизные модули после компиляции должны находится в строго определенных различных местах, а данный способ задает этот путь сразу для всех...(в MSVC еще и приписывая окончания которые непонятно как убрать)
PM MAIL   Вверх
bilbobagginz
Дата 25.7.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 28
Всего: 317



я не работаю с cmake, но я понимаю что там идут разные переменные.
LIBRARY_OUTPUT_PATH - это видимо переменная, на основе которой создаются др. каталоги.
возможно эти каталоги создаются после создания дополнительных переменных, напр.
set (LIBRARY_OUTPUT_PATH_$(ARCH_OPSYS_DEBUG), $(LIBRARY_OUTPUT_PATH)/Debug)
set (LIBRARY_OUTPUT_PATH_$(ARCH_OPSYS_RELEASE), $(LIBRARY_OUTPUT_PATH)/Release)
т.е. может быть создали 2 переменных 
LIBRARY_OUTPUT_PATH_INTEL_LINUX_DEBUG
LIBRARY_OUTPUT_PATH_INTEL_LINUX_RELEASE

Думаю тебе надо немного поковыряться в этом направлении.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
kamre
Дата 18.8.2008, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: нет
Всего: 13



Цитата(Lych @ 25.7.2008,  08:30)
Из-за особенностей проекта. Дебажные и релизные модули после компиляции должны находится в строго определенных различных местах, а данный способ задает этот путь сразу для всех...(в MSVC еще и приписывая окончания которые непонятно как убрать)

Для генерации makefile нет поддержки одновременно и Release, и Debug. Поэтому просто делаются сборки в разных местах. Типа такого:
Код

mkdir build-debug
cd build-debug
cmake -DCMAKE_BUILD_TYPE=Debug path/to/source
make

cd ..

mkdir build-release
cd build-release
cmake -DCMAKE_BUILD_TYPE=Release path/to/source
make


А вот при генерации MSVC проектов все кофигурации впихиваются уже в один файл проекта, и раскладываются по соответсвующим директориям типа release/debug. Как их поменять я пока не разбирался. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.