Мне определили псевдоним для компиляции opencv программы, которая идет как это
alias gcv='g++ -I/usr/local/include/opencv -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect'
Затем я продолжаю вводить
gcv imageshow.cpp
Я получаю этот длинный список ошибок
Но когда я использую ту же команду, указанную в псевдониме с .cpp (исходный код) файл, промежуточный файлы Включения и Библиотеки (после предложения здесь), все работает как очарование.
g++ -I/usr/local/include/opencv imageshow.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui
Теперь вводя долгую команду, которая становится еще больше, поскольку сложность увеличивается, каждый раз становится трудным, помогите мне в том, чтобы заставлять псевдоним работать или предложить любую другую альтернативу.
Почему бы не использовать простой сценарий вместо псевдонима?
файл gcv
в ~/bin/
#/bin/sh
g++ $* -I/usr/local/include/opencv -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect
Кроме того, если Вы используете zsh
можно использовать функцию, определяемую в Вашем .zshrc
файл:
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`
решает проблемы с пробелами в именах файлов также!
Пост о создании сценария оболочки был не очень ясным. Это была простая процедура, которой я следовал, чтобы создать собственный сценарий, и она работает, даже если в имени файла есть пробелы ..
Вот что я сделал
mkdir ~/bin
nano ~/bin/gcv
sudo chmod u+x ~/bin/gcv
Введите следующее в сценарий
blockquote>#!/bin/bash g++ "$@" `pkg-config --libs --cflags opencv`
export PATH=$PATH:~/bin
echo $PATH
и убедитесь, что вы видите ~/bin
в списке на выходе вы получите. alais
, если вы видите псевдонимы с именем gcv
, используйте команду unalias gcv
, иначе у вас возникнут проблемы с использованием gcv
в качестве команды для компиляции кода. Возможно, псевдонимы имеют более высокий приоритет, чем скрипты. Попробуйте это без использования псевдонимов:
g++ imageshow.cpp -o imageshow `pkg-config --cflags --libs opencv`