Software

Hromadná oprava importů v céčkových zdrojácích

Pokud někdy potřebujete upravovat nějaký projekt psaný ve windows na unixovém systému, narazíte na problém s názvy souborů. Pokud totiž vývojáři nedodržují skutečná jména souborů (malá/velká písmena), tak takový import na unixovém systému selže.

Pokud je například ve zdrojáku napsáno

#include "Funkce.h"

ale soubor se ve skutečnosti jmenuje funkce.h, musíte příslušný řádek s include opravit.

Navíc, pokud se v původních zdrojácích objevuje import z jiného adresáře

#include "include\Funkce.h"

nastává další problém s lomítkem v cestě.

Pro tyto účely jsem si vytvořil skript, který vše napraví.

Oprava zpětných lomítek

Opravu zpětných lomítek lze provést poměrně jednoduše pomocí nalezení všech relevantních souboru pomocí programu find a následné nahrazení lomítek programem sed. Je třeba si dát pozor na to, aby se nahrazovala lomítka pouze na řádcích s klíčovým slovem #include. Jinak by mohlo dojít k poškození zdrojového kódu.

expression='/#include/s/\\/\//g'
find . -name '*.h' -exec sed -i -e $expression {} \;
find . -name '*.cpp' -exec sed -i -e $expression {} \;

Ve windows normální lomítka nevadí (alespoň při použití GCC), ale v unixovém systému zpětná lomítka vadí, protože to je znak, který se klidně může vyskytovat v názvu souboru. Proto je tato konverze výhodná a zpětně použitelná pro všechny vývojáře.

Oprava názvů souborů

Tato oprava je poněkud komplikovanější, protože se názvy musí opravovat relativně ke každému souboru. Jsou tedy nalezeny všechny importy, ty jsou seřazeny a jsou vybrány pouze unikátní řetězce.

Pomocí programu find a grep je nalezeno příslušné jméno bez ohledu na velikost písmen. Pokud není nic nalezeno, jedná se nejspíš o import knihovních hlaviček a ty se ignorují.

Z nalezeného jména ponechám poslední část stejné délky, jako originální vyhledávaný řetězec. Pokud se shodují s originálem, je vše v pořádku a nic se nenahrazuje.

Pokud se nalezne chyba, je sestaven nahrazovací výraz pro sed a provede se nahrazení chybně napsaných cest. V tomto kroku se zároveň z nahrazují znaky <> za obyčejné uvozovky, protože jde i import z projektu.

Závěr

Popisovaný skript je možné stáhnout na spodní části stránky. Skript řeší automaticky problémy s kompilací zdrojových kódu psaných na windows tak, aby je bylo možné použít v unixovém systému. Tento skript slouží pouze pro převod importů. Byl použit pro převod projektu pro embedded zařízení bez vlastního OS.

Přiložené soubory:

Severovýchod Valid XHTML 1.0 Strict Valid CSS 2 Text to HTML converter and formatter Jay Bee simple CMS