Поиск пакета делает больше, чем просто установка пути.
Вы можете добавить путь к папке Qt в CMAKE_PREFIX_PATH
, чтобы избежать этого следующим образом:
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/home/user/Qt/5.12.0/gcc_64
или вы можете установить двоичные файлы qt для ROS, используя apt-get Like This :
sudo apt-get install ros-kinetic-libqt-*
Приблизительный ответ является при Сравнении имен файлов Unicode правильным путем.
В основном рекомендация является к верхнему регистру обеими строками (использование CharUpper
, CharUpperBuff
, или LCMapString
), затем сравните использование двоичного сравнения (т.е. memcmp или wmemcmp, не CompareString с инвариантной локалью). Файловая система не делает нормализации Unicode, и правила случая не зависят от настроек локали.
Существуют неудачные неоднозначные случаи при контакте с символами, правила преобразования регистра которых изменились через различные версии Unicode, но это почти столь хорошо, как можно сделать.
Сравнение имен файлов в собственном коде и не выдерживает сравнение, имена файлов являются несколькими хорошими сообщениями в блоге по этой теме. Первое имеет код C/C++ для OrdinalIgnoreCaseCompareStrings, и второе говорит Вам, как это не всегда работает на имена файлов и что сделать для смягчения этого.
Затем существуют проблемы Unicode. В то время как они новые
OrdinalIgnoreCase
алгоритмы сравнения строк являются замечательными для Вашего локального диска NTFS, они не могли бы привести к правильному ответу на Вашем диске FAT или сетевому ресурсу.Таким образом, каков ответ? Когда возможно, позвольте файловой системе сказать Вам.
CreateFile
может сказать Вам, если данное имя файла существует. Просто выберите правильное расположение создания. Если необходимо выдержать сравнение с дескрипторами, можно часто использоватьGetFileInformationByHandle
; посмотрите наdwVolumeSerialNumber
/nFileIndexHigh
/nFileIndexLow
.