Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > УП: Инструменты > Сборка иерархии проектов CMake'ом


Автор: Cheloveck 15.6.2011, 22:56
Допустим, есть три проекта: LIBRARY_1, LIBRARY_2 и EXECUTABLE.
LIBRARY_2 является самостоятельным проектом и зависит от LIBRARY_1.
EXECUTABLE зависит от LIBRARY_1 и LIBRARY_2.
LIBRARY_1 может использоваться другими проектами отдельно, допустим есть EXECUTABLE_2, который зависит только от LIBRARY_1.

Все проекты, по одному, лежат в SVN и линкуются друг к другу по средствам svn:externals. Вопрос, как должны быть организованы ФС и что указать в CMakeLists.txt файлах, чтобы все таргеты оказались в одной директории?

Что пытался сделать:
Пытался организовать ФС так
Цитата

root
    library_1
        src
        CMakeLists.txt
    library_2
        src
        CMakeLists.txt
    executable
        src
        CMakeLists.txt

Сборка планировалась так
Код

cmake executable

Но при выполнении add_subdirectory cmake потребовал указать build_dir, так как подкаталог не является подкаталогом текущего каталога. В этом случае, все таргеты этого проекта складываются относительно указанного build_path и линковать, мягко говоря, не удобно. Кроме того, возникает большая зависимость между, в общем-то, не зависимыми проектами, не говоря уж о путанице.
Пробовал ещё не использовать add_subdirectory, а в качестве аутпута для бинарников указать ../bin, но тогда cmake ругается на существующий кеш от предыдущей сборки.
Вариант с матрёшкой был сразу отброшен
Цитата

root
    executable
        src
        CMakeLists.txt
        library_2
            src
            CMakeLists.txt
            library_1
                src
                CMakeLists.txt

по очевидным причинам.

В общем, у кого был опыт подобных сборок, поделитесь им.
PS если не понятно рассказал, спрашивайте.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)