В настоящий момент я считаю, что мне нужно получить расположение вывода цели из командной строки Cmake (после его сборки).
Или, может быть, мне нужно написать сценарий CMake, чтобы позволить процессу быть запустить на цели (после ее создания).
Наш базовый c поток будет:
- код
- build
- debug
- build
- profile
- build
- et c.
и я хочу, чтобы это было легче сделать из одно место в командной строке.
В настоящее время мы планируем добавить python внешний интерфейс для нашей сборки (так как это разнородная версия So C с несколькими процессорами, мы не можем иметь одну конфигурацию из-за необходимости нескольких компиляторов), поэтому некоторые сценарии извне не имеют большого значения.
Я хотел бы иметь возможность сделать что-то вроде:
cmake <configuration stuff>
build.py <target>
debug.py <target>
profile.py <target>
без разработчика точно знать, где находится двоичный файл цели. (К вашему сведению, эти вещи сложнее, чем просто вызов gdb или чего-то еще, поэтому им требуется сценарий для выполнения этого из командной строки с помощью сторонних инструментов)
Легко ли это осуществить? Или мне нужно написать сценарий в Cmake для вывода необходимой информации в файл во время конфигурации и запросить этот файл по факту?
Будем весьма признательны за любые рекомендации или помощь в достижении моей цели.
edit: пытаясь быть более точным в моих вопросах:
После того, как я настроил с помощью cmake. есть ли способ из каталога сборки снова запустить cmake, чтобы запросить кеш / buildsystem / что угодно, чтобы выяснить, где будет вывод цели.
например:
./source
/modules
/module1
/submodule1
/test1
/submodule2
/test1
/module2
/test1
/module3
/test1
I go в мой каталог сборки, выполните cmake -S .. -B . <etc>
Теперь у меня есть дерево, заполненное make-файлами и другими материалами.
Если я все-таки создаю, это дерево заполняется артефактами сборки, которые примерно зеркально отражаются. исходное дерево (по крайней мере, по моему опыту)
, если я сделаю make help
, оно выдаст несколько целей по имени.
module1
submodule1
submodule1_test1
submodule2
submodule2_test1
et c.
Теперь я хочу знать, где находится исполняемый файл submodule1_test1, не зная, что его родителем является module1. Могу ли я на этом этапе запустить cmake и запросить кеш / buildsystem, чтобы получить местоположение этой названной цели?
Если я не могу, я могу сам управлять ей, формируя «базу данных» во время настройки , Это не проблема. Я просто надеялся, что cmake сохранит эту информацию для последующего запроса в своем кэше или где-то еще.