在C++中使用CMAKE中的变量

coo*_*oow 1 c++ cmake

我想在我的C++代码中使用我的CMakeLists.txt中声明的值.我试过这样做:

ADD_DEFINITIONS( -D_MYVAR=1 )
Run Code Online (Sandbox Code Playgroud)

#if -D_MYVAR == 1
    #define var "someone"
#else
    #define var "nobody"
#endif
int main(){
    std::cout << "hello" << var << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我不明白为什么.也许我没有正确使用ADD_DEFINITIONS ......

理想情况下,我希望做到这样的事情:

ADD_DEFINITIONS( -D_MYVAR=\"someone\" )
Run Code Online (Sandbox Code Playgroud)

#define var D_MYVAR

int main(){
    std::cout << "hello" << var << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

可能吗 ?

谢谢 !

小智 7

add_definitions ( -DVARNAME=... )
Run Code Online (Sandbox Code Playgroud)

是使用add_definitions的正确方法.

要检查常数,请使用

#ifdef VARNAME
...
#endif
Run Code Online (Sandbox Code Playgroud)


coo*_*oow 5

感谢???????

他的解决方案适用于我的第一个问题,我可以做到:

CMakeLists.txt:

ADD_DEFINITIONS( -D_VAR=\"myValue\" )
Run Code Online (Sandbox Code Playgroud)

主.cpp:

#include <iostream>

#ifdef _VAR
    #define TXT _VAR
#else
    #define TXT "nobody"
#endif

int main(){
    std::cout << "hello " << TXT << " !" << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)