Учитывая возросшую структуру сборки. Как импортировать цель с более низкого уровня на более высокий уровень? Вот упрощенный пример:cmake: Как импортировать цель из подкаталога на более высокий уровень?
верхнего уровня CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
add_subdirectory(sub1)
sub1/CMakeLists.txt:
add_subdirectory(subdir)
add_executable(foo EXCLUDE_FROM_ALL
foo.cpp)
add_custom_target(both)
add_dependencies(both DEPENDS foo bar)
sub1/подкаталог/CMakeLists.txt:
add_executable(bar EXCLUDE_FROM_ALL
bar.cpp)
В верхнем уровне все цели видны:
- делает Foo - строит Foo
- делают бар - строит брусок
- сделать оба - строит Foo & бара
На нижнем уровне (sub1/subdir) только бар видна:
- делает бар - строит бар
На среднем уровне только Foo виден как мишень:
- делает Foo - строит Foo
- сделать оба - сборки Foo & бар
сделать help показывает:
The following are some of the valid targets for this Makefile: ... all (the default if no target is provided) ... clean ... depend ... edit_cache ... rebuild_cache ... both ... foo ... foo.o ... foo.i ... foo.s
Как я могу добавить бар в этот список, не двигая инструкции по сборке до уровня?
Все цели доступны уже на уровне верхнего уровня. Его следующий каталог мне интересен. Удаление DEPENDS не имеет никакого значения, хотя это необязательно. –
Вы правы. Можете ли вы немного рассказать о своем случае использования и почему этого недостаточно, чтобы называть «make bar» из верхней папки? – Emil
Первоначально это была миграция. Рабочий процесс перед переключением на cmake состоял в том, чтобы работать внутри дерева, содержащего подпроект, и строить цели оттуда. Это, конечно, старый стиль «в исходном дереве», который строится, но в принципе это должно быть возможно. Это также должно быть возможным из подкаталога дерева сборки в исходной сборке. –