Cmake 传递参数

Ava*_*uch 1 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})
Run Code Online (Sandbox Code Playgroud)

在命令行中这会是这样的

gcc file_recognizer.c -o Assignment6
Run Code Online (Sandbox Code Playgroud)

然后你说

./Assignment6 gifFile.gif
Run Code Online (Sandbox Code Playgroud)

如何让 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;
}
Run Code Online (Sandbox Code Playgroud)

Cin*_*its 5

这不是 CMake 设计的目的。我的意思是,用 CMake 可以做到:

add_custom_command(OUTPUT output COMMAND Assignment6 ARGS gifFile.gif)
Run Code Online (Sandbox Code Playgroud)

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

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

点击这里:

编辑配置

并在此处输入您的参数:

在此输入图像描述