2017-10-29 174 views
0

我有一個程序根據它們的簽名識別文件。很棒。但我是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; 
} 

回答

1

這不是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