Cmake 传递参数

Cmake passing arguments

我有一个程序可以根据签名识别文件。效果很好。但我是 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;
}

这不是 CMake 设计的目的。我的意思是,使用 CMake 是可行的:

add_custom_command(OUTPUT output COMMAND Assignment6 ARGS gifFile.gif)

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

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

点击此处:

并在此处输入您的参数: