Настройка глобальной конфигурации (IP-адрес клиента и сервера) для проекта C ++ - мой путь правильный и есть ли лучший способ сделать то же самое? - PullRequest
0 голосов
/ 30 января 2019

Прежде всего, я новичок в C ++, особенно в CMake, а также в Stack Overflow, поэтому я прошу прощения, если у вас возникли проблемы с пониманием моего вопроса (все вопросы и предложения приветствуются).

У меня естьC ++ проект, использующий CMake.Я хочу установить «глобальные» переменные (например, IP-адрес клиента и сервера) в одном месте и использовать эти переменные в своем коде.Проект сложный, он содержит более 50 CMakeList.txt файлов.

Я следовал инструкциям по ссылке: https://cmake.org/cmake-tutorial/, " Добавление номера версии и настроенного файла заголовка ",Я добавил config.h.in и добавил в файл следующее:

В config.h.in добавил следующее:

-#define CLIENT_IP_ADDRESS "@CLIENT_IP_ADDRESS@"
-#define SERVER_IP_ADDRESS "@SERVER_IP_ADDRESS@"

В top из CMakeLists.txt, добавил следующее:

set(SERVER_IP_ADDRESS "localhost")
set(CLIENT_IP_ADDRESS "localhost")

configure_file ("${PROJECT_SOURCE_DIR}/config.h.in" "${PROJECT_BINARY_DIR}/config.h")

После этого я могу получить файл config.h в PROJECT_BINARY_DIR, включить его в файлы cpp и использовать как CLIENT_IP_ADDRESS, так и SERVER_IP_ADDRESS.

Что касается моего подхода, у меня есть несколько вопросов:

  1. Поскольку я сгенерировал config.h из своего top CMakeLists.txt, это нормально, еслиЯ включаю сгенерированные файлы config.h в cpp, которые являются подкаталогами?
  2. По какой-то причине не было необходимости вызывать: include_directories(${PROJECT_BINARY_DIR}/) в CMakeLists.txt, которые создают файлы cpp, где ясделали #include "config.h".Я сам исследую это, но, возможно, у кого-то есть подсказка, почему это так?
  3. Это хороший способ установить «глобальные» переменные?Я также прочитал о add_definitions как возможность.Какой подход лучше (add_definitions или config.h)?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...