CMake and Visual Studio resource files

11,695

Solution 1

Try to set_source_files_properties(your.ico your.rc2 PROPERTIES LANGUAGE RC).

Solution 2

By default it shouldn't do anything with those files. The source file property LANGUAGE should be empty and thus the action for the file should be checked by the file type. Which shouldn't be anything since it's not something it should compile.

Check your CMakeLists.txt that is doesn't contain a set_source_files_properties command that would mess with that property.

If you want to do something with the files, here are two ways to do things:

With add_custom_target you can add them and run custom commands for them when you build the project. Granted that the files have changed.

With configure_file you can easily copy them to a build directory if needed. With the COPYONLY flag.

Share:
11,695
villintehaspam
Author by

villintehaspam

Updated on October 17, 2022

Comments

  • villintehaspam
    villintehaspam over 1 year

    I am converting a C++ project created using Visual Studio 2005 to CMake and have stumbled upon a bit of a problem with resource files that are included in the project.

    The project includes a .rc file, a bunch of .ico files and a .rc2 file.

    The regular .rc file works fine in the generated project and uses the resource compiler. The .ico and .rc2 files however are causing problems when they are just being included, because in the generated project Visual Studio attempts to compile them using the C/C++ compiler.

    I assume that these files are included by the .rc file, so it would probably work to just not include them in the CMakeLists.txt file, but since it is obviously possible to list them in the project (they are visible in the original project) I would like to do so, so that the user of the generated project can see that these files are being used.

    What is the correct way to handle these extra VS resource files in CMake?

  • jhasse
    jhasse over 4 years
    You shouldn't set it for the .ico file, otherwise MinGW's windres will fail.