7

Sto convertendo un progetto C++ creato utilizzando Visual Studio 2005 in CMake e sono incappato in un piccolo problema con i file di risorse inclusi nel progetto.File di risorse di CMake e Visual Studio

Il progetto include un file .rc, un gruppo di file .ico e un file .rc2.

Il file regolare .rc funziona correttamente nel progetto generato e utilizza il compilatore di risorse. I file .ico e .rc2 tuttavia causano problemi quando vengono inclusi, poiché nel progetto generato Visual Studio tenta di compilarli utilizzando il compilatore C/C++.

Suppongo che questi file siano inclusi nel file .rc, quindi probabilmente funzionerebbe semplicemente non includendoli nel file CMakeLists.txt, ma poiché è ovviamente possibile elencarli nel progetto (sono visibili in il progetto originale) Mi piacerebbe farlo, in modo che l'utente del progetto generato possa vedere che questi file vengono utilizzati.

Qual è il modo corretto per gestire questi file di risorse VS extra in CMake?

+0

Non conosco CMake, ma hai ragione su come vengono utilizzati i file di risorse. Se vuoi averli nel file CMakeLists.txt, devi metterli in una destinazione che non sarà costruita, dovrebbe essere qualcosa nella documentazione. –

+0

@JoachimPileborg: Grazie per le informazioni. Sì, il problema è che non conosco nemmeno CMake e non ho trovato nulla nei documenti che sembrano correlati ... :) – villintehaspam

+0

Trovato in alcune segnalazioni di bug su MinGW, anche se sembra che dovrebbe funzionare? "Come suggerito da qualcuno su IRC, ho aggiunto i file resource.h/resource.rc all'elenco di sorgenti add_executable() del progetto." –

risposta

2

Provare a set_source_files_properties(your.ico your.rc2 PROPERTIES LANGUAGE RC).

1

Per impostazione predefinita, non dovrebbe fare nulla con quei file. La proprietà del file di origine LANGUAGE deve essere vuota e pertanto l'azione per il file deve essere controllata dal tipo di file. Quale non dovrebbe essere niente poiché non è qualcosa che dovrebbe compilare.

Controlla il tuo CMakeLists.txt che non contiene un comando set_source_files_properties che potrebbe compromettere tale proprietà.

Se si vuole fare qualcosa con i file, qui ci sono due modi per fare le cose:

Con add_custom_target si possono aggiungere ed eseguire comandi personalizzati per loro quando si genera il progetto. Garantito che i file sono cambiati.

Con configure_file è possibile copiarli facilmente in una directory di build, se necessario. Con la bandiera COPYONLY.