gpt4 book ai didi

C++ 错误 : expected primary-expression before ‘;’ token using Cmake

转载 作者:行者123 更新时间:2023-11-28 05:18:00 24 4
gpt4 key购买 nike

我使用 Cmake 来定义文件夹路径

我有 Config.in.h 文件,其中 #cmakedefine 声明为

#cmakedefine CAFFE_MODEL_PATH
#cmakedefine CAFFE_MODEL_PATH
#cmakedefine CAFFE_TRAIN_MODEL
#cmakedefine MEAN_FILE
#cmakedefine LABEL_FILE

在我的CMakeLists.txt中,我做了

set(CAFFE_MODEL_PATH "" CACHE PATH "Path to a Caffe model")
set(CAFFE_TRAIN_MODEL "" CACHE PATH "Path to a trained model")
set(MEAN_FILE "" CACHE PATH "Path to the mean file all trained images")
set(LABEL_FILE "" CACHE PATH "Path to the mean file all trained images")
configure_file (
"${PROJECT_SOURCE_DIR}/Config.h.in"
"${PROJECT_SOURCE_DIR}/Config.h"
)

因此 Config.h 为那些 CAFFE_MODEL_PATH、CAFFE_TRAIN_MODEL、MEAN_FILE、LABEL_FILE 设置了#define。

但是当我在我的 main.cpp 文件中使用它们时

int main(void) {

::google::InitGoogleLogging("endtoenddetection");

string model_file = CAFFE_MODEL_PATH;
string trained_file = CAFFE_TRAIN_MODEL;
string mean_file = MEAN_FILE;
string label_file = LABEL_FILE;
}

我有错误

/home/Softwares/ReInspect/endtoendLstm/main.cpp:8:43: error: expected primary-expression before ‘;’ token
string model_file = CAFFE_MODEL_PATH;
^
/home/Softwares/ReInspect/endtoendLstm/main.cpp:9:44: error: expected primary-expression before ‘;’ token
string trained_file = CAFFE_TRAIN_MODEL;
^
/home/Softwares/ReInspect/endtoendLstm/main.cpp:10:36: error: expected primary-expression before ‘;’ token
string mean_file = MEAN_FILE;
^
/home/Softwares/ReInspect/endtoendLstm/main.cpp:11:37: error: expected primary-expression before ‘;’ token
string label_file = LABEL_FILE;

最佳答案

configure_file时,表达式

#cmakedefine CAFFE_MODEL_PATH

实际上是一个条件宏定义。也就是说,仅当相应的 CMake 变量被评估为 no-false(根据 if(constant) 规则)时才定义宏。

在您的情况下,CMake 变量具有 值,这些值被评估为 false。这样配置的文件(Config.h 在你的例子中)不包含宏定义

如果你想用字符串值定义宏,使用

#define CAFFE_MODEL_PATH "@CAFFE_MODEL_PATH@"

这样即使对应的变量为空,宏也会被正确定义。

另见 documentation用于 configure_file 命令。

关于C++ 错误 : expected primary-expression before ‘;’ token using Cmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42198870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com