CMake задает вопросы по настройке - PullRequest
3 голосов
/ 05 марта 2011

Представьте себе следующую ситуацию:

У меня есть папка "project", в этой папке у меня есть папка "src" и 2 файла "1.cpp" и "2.cpp". Каждый .cpp производит один исполняемый файл. После того, как cmake генерирует make-файлы, я хочу сделать следующее:

  • укажите, что я хочу создать исполняемый файл "1", или "2", или оба.
  • указать, что я хочу собрать все исполняемые файлы в режиме отладки
  • укажите, что я хочу собрать все исполняемые файлы в режиме выпуска
  • указать, что я хочу собрать все исполняемые файлы в режимах выпуска и отладки

поэтому я хочу написать следующее:

  • (с) сделать / что-нибудь 1
  • (с) сделать / что-нибудь 2
  • (c) сделать / что-нибудь все-релиз
  • (c) сделать / что-нибудь полностью отладочное
  • (c) сделать / что-нибудь все-отладка-и-релиз

Каков наилучший способ добиться этого? Большое спасибо!

1 Ответ

3 голосов
/ 05 марта 2011

Вам нужен CMakeLists.txt верхнего уровня в корне, который знает о вашей директории "src" (используя add_subdirectory).Затем в «src» вам понадобится еще один CMakeLists.txt, который определяет, как компилировать ваши исполняемые файлы.Это само по себе позволит, например, сказать:

make 1 2

Что касается режима отладки / выпуска, его можно указать в cmake через переменную CMAKE_BUILD_TYPE.Но я обычно на верхнем уровне инструктирую его для режима отладки или выпуска, если переменная не указана:

IF( NOT CMAKE_BUILD_TYPE )
  SET( CMAKE_BUILD_TYPE Debug ) 
  SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG" )
ENDIF( NOT CMAKE_BUILD_TYPE )

Другой способ редактирования типа сборки без изменения CMakeLists.txt - это сделать

make edit_cache

, который вызовет диалог ncurses с переменными, CMAKE_BUILD_TYPE среди них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...