为C ++项目设置全局配置(客户端和服务器IP)-我的方法正确吗,并且有更好的方法吗?

时间:2019-01-29 23:19:04

标签: c++ cmake

首先,我是C ++的新手,尤其是CMake,也是Stack Overflow的新手,所以如果您在理解我的问题时遇到困难(欢迎所有问题和建议),我深表歉意。

我有一个使用CMake的C ++项目。我想在一个地方设置“全局”变量(例如客户端和服务器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@"

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_ADDRESSSERVER_IP_ADDRESS。 / p>

关于我的方法,我有几个问题:

  1. 自从我从 top config.h生成CMakeLists.txt以来,如果我将生成的config.h包含在cpp个文件中,目录?
  2. 由于某些原因,无需调用:include_directories(${PROJECT_BINARY_DIR}/)中的CMakeLists.txt正在建立cpp的{​​{1}}文件中。我将自己进行调查,但也许有人有线索,这是为什么?
  3. 这是设置“全局”变量的好方法吗?我也读过关于#include "config.h"的可能性。哪种方法更好(add_definitionsadd_definitions)?

0 个答案:

没有答案