Cmake传递参数

问题描述:

我有一个程序根据它们的签名识别文件。很棒。但我是C新手,现在正试图让一个名为CLion的IDE工作。然而,我无法弄清楚如何将命令参数添加到cmake中 - 例如,当我运行main并希望传递gifFile或pdfFile来识别我可以这样做时。这是我的代码迄今为cmake。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中设置程序参数以进行调试。

点击这里:

Edit Configurations

,并在此输入您的ARGS:

enter image description here

+1

感谢。这适用于传递参数,但由于某种原因,它现在位于argv [0]。必须与我的其他机器上编译与gcc的方式有关。欣赏小费虽然! – Avallauch