Cmake传递参数

时间:2017-10-29 00:26:03

标签: cmake clion ansi-c

我有一个基于签名识别文件的程序。效果很好。但我是C的新手,我现在正试图让一个名为CLion的IDE工作。但是,我无法弄清楚如何向cmake添加命令参数 - 这样当我运行main并想要传递gifFile或pdfFile来识别我可以这样做。这是我目前为cmake编写的代码。

cmake_minimum_required(VERSION 3.8)
project(Assignment6)

set(CMAKE_C_STANDARD 99)

set(SOURCE_FILES file_recognizer.c)
add_executable(Assignment6 ${SOURCE_FILES})

在命令行中,这将类似于

gcc file_recognizer.c -o Assignment6

然后你说

./Assignment6 gifFile.gif

我如何让cmake接受最后的论点,“gifFile.gif”?

如果需要,以下是我的主要参考功能

int main(int argc, char const *argv[]) {
    FILE *yourFile;
    unsigned char *fileBytes, *fileType;
    long fileLength;

    fileLength = 10;
    if(argc != 2 || (yourFile = fopen(argv[1], "rb")) == NULL) {
        printf("Invalid Input\n");
        exit(-1);
    }

    fileBytes = readFile(yourFile, fileLength, fileBytes);
    determineFileType(fileBytes, fileType);

    return 0;
}

1 个答案:

答案 0 :(得分:3)

这不是CMake旨在做的事情。我的意思是,它可以与CMake一起使用:

add_custom_command(OUTPUT output COMMAND Assignment6 ARGS gifFile.gif)

但听起来你想要做的事情不是构建过程的一部分,而CMake是关于构建,测试和打包软件的,而不是运行它。

由于您正在使用CLion,因此最好在CLion中设置程序参数以进行调试。

点击此处:

Edit Configurations

并在此处输入您的参数:

enter image description here