Avallauch
Avallauch

Reputation: 65

Cmake passing arguments

I have a program to recognize files based on their signatures. Works great. But I'm new to C and am now trying to get an IDE called CLion to work. However, I can't figure out how to add command arguments to cmake - such that when I run main and want to pass a gifFile or a pdfFile to recognize I can do so. Here is my code so far for 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})

in the command line this would be something like

gcc file_recognizer.c -o Assignment6

and then you say

./Assignment6 gifFile.gif

How do I get cmake to accept the argument at the end, "gifFile.gif"?

Below is my main function for reference if needed

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;
}

Upvotes: 1

Views: 6659

Answers (1)

Cinder Biscuits
Cinder Biscuits

Reputation: 5261

This isn't something CMake is designed to do. I mean, it's do-able with CMake:

add_custom_command(OUTPUT output COMMAND Assignment6 ARGS gifFile.gif)

But what it sounds like what you want to do isn't part of the build process and CMake is all about the building, testing, and packaging software, not running it.

Since you're using CLion, you might be better off setting the program arguements in CLion for debugging purposes.

Click here:

Edit Configurations

and enter your args here:

enter image description here

Upvotes: 5

Related Questions