LINUX.ORG.RU

Нужна помощь с cmake

 


0

2

Добрый день, нужна помощь с cmake. Как, если это возможно, сделать глобальными include_dirs? Есть главный CMakeLists, есть ниже стоящие второстепенные, собирающие для главного библиотеки. Если указать в главном include_directories - то второстепенные их уже не видят, а хотелось бы чтобы видили. Подскажите пожалуйста.

★★★

Ответ на: комментарий от vvviperrr

Не очень понимаю как. Все равно же придется выполнять include_dirs во второстепенных файлах или нет?

Silerus ★★★ ()

У меня тут как раз пару полезных ссылок под рукой завалялось, очень полезно почитать по CMake

https://www.slideshare.net/DanielPfeifer1/cmake-48475415

https://github.com/toeb/moderncmake/blob/master/Modern CMake.pdf

Ответит часть вопросов. Точнее не подскажу

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Dendy

нет просто собирающие библиотеку из имеющихся в директории файлов

SUB CMAKELIST
cmake_minimum_required(VERSION 2.8)

project(keyboard_widget)


file(GLOB SOURCES src/*.cpp)

add_library(${PROJECT_NAME} STATIC ${SOURCES})

а потом просто линкуется как готовая библиотека

MAIN CMAKELISTS
....
SUBDIRLIST(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR}/src)
set(include_modules "")
set(libraries_modules "")

foreach (subdir ${SUBDIRS})
  MESSAGE("add module: " ${subdir})
  add_subdirectory(src/${subdir})
  list(APPEND libraries_modules ${subdir})
  list(APPEND include_modules src/${subdir}/include)
endforeach()
.....
  target_link_libraries(${PROJECT_NAME} ${libraries_modules})

Просто настройки компилятора, свеху вниз проходят, а вот переменная содержащия include_dirs нет (хотя очевидно, что при таком раскладе cmakelists независимы)

Silerus ★★★ ()

Ложь, видят. Всегда объявляю include_directories() в корневом CMakeLists и он подхватывается во всех поддиректориях.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

Давайте без голословных обвинений, делаю make VERBOSE=1 и вижу что майн собирается с нужными путями для хедеров, а локальная либа без, повторяю add_include во второстепенном и все ок. Возможно это Qt виноват. Я решил попробывать использовать cmake для сборки - не знаю

Silerus ★★★ ()
Ответ на: комментарий от Silerus

Не вижу в коде include_directories(). Также, про какую переменную идёт речь? Язык CMake императивный, всё что было объявлено выше add_subdirectory() будет видно в дочернем проекте.

Dendy ★★★★★ ()
Ответ на: комментарий от Dendy

Я действительно дал кусок дефолтного cmake чтоб показать, как я подключаю подчиненые. вот в этом наверно и проблема спасибо, (я кажется добавлял пути ниже ), завтра проверю спасибо

Silerus ★★★ ()
Ответ на: комментарий от Dendy

Вы абсолютно правы,include_directories(), были ниже. Спасибо за помощь. Тему можно закрывать.

Silerus ★★★ ()
Ответ на: комментарий от Silerus

Для верующих — безусловно. Начинать предложения с «но» тоже.

slackwarrior ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.