C++ 如何使用CMake变量选择要包含在c程序中的头文件
是否可以使用CMake变量来决定c程序中包含的头文件。 我尝试了以下方法,但没有成功: header_a.h->是包含以下代码的文件C++ 如何使用CMake变量选择要包含在c程序中的头文件,c++,c,cmake,C++,C,Cmake,是否可以使用CMake变量来决定c程序中包含的头文件。 我尝试了以下方法,但没有成功: header_a.h->是包含以下代码的文件 #if (@CMAKE_VAR@ == "B") #include header.b #else #include header.c #endif 我还尝试了以下方法,但同样失败: 标题_a.h #ifdef CMAKE_VAR #define CMAKE_VAR_SELECTION CMAKE_VAR #endif #if
#if (@CMAKE_VAR@ == "B")
#include header.b
#else
#include header.c
#endif
我还尝试了以下方法,但同样失败:
标题_a.h
#ifdef CMAKE_VAR
#define CMAKE_VAR_SELECTION CMAKE_VAR
#endif
#if (CMAKE_VAR_SELECTION == "B")
#include header.b
#else
#include header.c
#endif
提前感谢您的帮助。您所能做的就是为CMake中的C/C++代码定义相应的宏
# your CMAKE variable
set(CMAKE_VAR "B")
# that would define macro constant CMAKE_VAR_B
add_definitions(-DCMAKE_VAR_${CMAKE_VAR})
然后在代码中你可以使用你提出的
#if defined(CMAKE_VAR_B)
#include header.b
#else
#include header.c
#endif
您可以使用CMake的命令写入标头,使其包含正确的include声明:
if (${CMAKE_VAR} EQUAL "B")
file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/header_a.h"
"
#include <header.b>
"
)
else()
file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/myheader.hpp"
"
#include <header.c>
"
)
endif()
if(${CMAKE_VAR}等于“B”)
文件(写入“${CMAKE\u CURRENT\u SOURCE\u DIR}/header\u a.h”
"
#包括
"
)
else()
文件(写入“${CMAKE\u CURRENT\u SOURCE\u DIR}/myheader.hpp”
"
#包括
"
)
endif()
您是否使用头文件上的配置_文件
来扩展cmake变量?您是否在cmake端执行了任何操作?C++编译器和CGEAR不会神奇地通信。我不知道你是从哪里得到这个想法的。