CMake: получить имя корневого проекта - PullRequest
0 голосов
/ 01 января 2019

Предположим, у меня есть следующая структура проекта C:

├── CMakeLists.txt
├── include
│   ├── header.h
├── README.md 
├── src
│   └── src.c
└── test
    ├── CMakeLists.txt
    └── test.c

CMakeLists.txt в корневом каталоге содержит проект с именем cproj

PROJECT(cproj C)

Также в test/CMakeLists.txt,У меня есть другой проект

PROJECT(test C)

Вопрос в том, как я могу оценить имя проекта cproj в каталоге CMakeLists.txt в test?

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Если я правильно соберу ваш вариант использования, вам, вероятно, следует сделать следующее:

  1. test, скорее всего, не является отдельным подпроектом.У него не должно быть директивы project.Если вы удалите его, он будет теперь находиться под проектом cproj.

  2. Теперь, когда вы ищете имя проекта, которое вы задали в корне, оно должно быть доступно через CMAKE_PROJECT_NAME переменная.

0 голосов
/ 01 января 2019

Я нашел решение и, думаю, сам на него отвечу.

В корне CMakeLists.txt я добавил SET_PROPERTY(GLOBAL PROPERTY GLOBAL_NAME "cproj").Это создало глобальное свойство с именем GLOBAL_NAME.

. И в каталоге CMakeLists.txt in test я использую GET_PROPERTY(ROOT_PROJECT_NAME GLOBAL PROPERTY GLOBAL_NAME), чтобы сохранить значение свойства в локальной переменной с именем ROOT_PROJECT_NAME.Затем я могу получить доступ к значению через эту переменную.

РЕДАКТИРОВАТЬ: Согласно @StoryTeller, я могу просто удалить объявление нового проекта в test/CMakeLists.txt и использовать вместо него CMAKE_PROJECT_NAME.

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