У меня есть псевдоним, определенный для компиляции программы opencv, которая выглядит следующим образом
alias gcv='g++ -I/usr/local/include/opencv -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect'
Затем я продолжаю вводить
gcv imageshow.cpp
Я получаю этот длинный список ошибок
Но когда я использую ту же команду, указанную в псевдониме с файлом .cpp (исходный код) между файлами Include и Library (следуя предложению здесь), все работает
g++ -I/usr/local/include/opencv imageshow.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui
Теперь, набрав длинную команду, которая становится еще больше по мере увеличения сложности, каждый раз становится все труднее, пожалуйста, помогите мне в том, чтобы заставить псевдоним работать или предложить любую другую альтернативу. [ ! d7]
Почему бы не использовать простой скрипт вместо псевдонима?
file gcv в ~/bin/
#/bin/sh
g++ $* -I/usr/local/include/opencv -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect
Альтернативно, если вы используете zsh, вы можете использовать функцию, определенную в вашем файле .zshrc: [!d2 ]
gcv() {
g++ $* -I/usr/local/include/opencv -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect;
}
Автоматические флаги компилятора и компоновщика
Если у вас возникают проблемы с компоновщиками, вы также можете включить pkg-config здесь:
#/bin/sh
g++ $* `pkg-config --cflags --libs opencv`
Автоматизированный компилятор и флаги компоновщика
В то время как другие сообщения по подобным проблемам существуют, обработка пробелов в именах файлов не является тривиальной, поэтому я подумал, что я бы воспользовался элегантным решением здесь; в частности, я обнаружил, что использование переменной IFS очень помогает.
Таким образом, создание небольшого дополнения в
#/bin/sh
IFS=$';'
g++ $* `pkg-config --cflags --libs opencv`
также разрешает проблемы с пробелами в именах файлов!
Сообщение о создании сценария оболочки было не очень понятно. Это была простая процедура, которую я выполнил для создания собственного скрипта, и он работает, даже если в нем есть пробелы.
[d1 ] Вот что я сделал mkdir ~/bin nano ~/bin/gcv sudo chmod u+x ~/bin/gcv Введите в скрипт #!/bin/bash
g++ "$@" `pkg-config --libs --cflags opencv`
export PATH=$PATH:~/bin тип echo $PATH и убедитесь, что вы видите ~/bin, указанный в выводе u получить. Введите alais, если вы видите какие-либо псевдонимы по имени gcv, используйте команду unalias gcv, иначе у вас будет проблема с использованием gcv в качестве команды для компиляции кода. Может быть, псевдонимы имеют более высокий приоритет, чем скрипты. Даже если мои имена файлов имеют пробелы в них, сценарий не будет иметь проблемы.