首先,我是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_ADDRESS
和SERVER_IP_ADDRESS
。 / p>
config.h
生成CMakeLists.txt
以来,如果我将生成的config.h
包含在cpp
个文件中,目录?include_directories(${PROJECT_BINARY_DIR}/)
中的CMakeLists.txt
正在建立cpp
的{{1}}文件中。我将自己进行调查,但也许有人有线索,这是为什么?#include "config.h"
的可能性。哪种方法更好(add_definitions
或add_definitions
)?