2015-10-28 5 views
1

Good Day ...Запуск внешней программы с несколькими аргументами в CMAKE

Я пишу приложение, которое требует перекрестной компиляции и запуска и внешней команды для преобразования изображений.

В Linux и OSX, следующие хорошо работает:

EXECUTE_PROCESS(COMMAND convert ${PNG_FILE} -resize ${size}x${size} ${XPM_FILE})

Однако, когда я пытаюсь запустить его под окнами, я получаю ошибку "Invalid Paramer - -resize"

Любые предложения будут наиболее ценится ...

Роб

+0

Вы пытались выполнить команду вручную по команде? Вы уверены, что PNG_FILE не пуст? Имеет ли расширение файла? – usr1234567

+4

Просто подумайте: 'convert' - это команда, которая поставляется с Windows ('> help convert' -> 'Конвертирует том FAT в NTFS. Объём CONVERT/FS: NTFS [/ V] [/ CvtArea: имя_файла] [/ NoSecurity ] [/ X] 'Итак, дайте полный путь к программе ImageMagick' convert.exe'. CMake поможет вам найти ее: используйте ['include (FindImageMagick)'] (https://cmake.org/cmake/help/ v3.0/module/FindImageMagick.html) и 'find_package (ImageMagick COMPONENTS convert)'. Затем 'EXECUTE_PROCESS (COMMAND $ {ImageMagick_EXECUTABLE_DIR} /convert.exe $ {PNG_FILE} -resize $ {size} x $ {size} $ { XPM_FILE}) '. – Florian

+0

Это сделало это, Флориан ... Огромное спасибо! – BassCleff66

ответ

1

Поскольку execute_command() действительно использует ОС оболочки вас/CMake, вероятно, нашли окно собственного convert.exe:

> help convert 
Converts a FAT volume to NTFS. 
CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X] 

Так дайте полный путь к программе ImageMagick в convert.exe. CMake can help you finding it:

include(FindImageMagick) 
find_package(ImageMagick COMPONENTS convert REQUIRED) 
EXECUTE_PROCESS(COMMAND ${ImageMagick_EXECUTABLE_DIR}/convert ${PNG_FILE} -resize ${size}x${size} ${XPM_FILE})