我需要将“/DEF:c:\filepath\myLib.def”命令行选项从bash脚本传递到MS编译器/链接器。路径是由bash脚本作为构建过程的一部分生成的。基本上,我的脚本传递的参数是:
-DEF:/c/filepath/myLib.defMSYS path conversion无法正确处理它,因为它不理解/DEF:部件。如果我这样做了,它就会起作用
-DEF=/c/filepath/myLib.def但是ms工具不能理解这个参数。简而言之,在MSYS bash中编写该参数的正确方法是什么,以便将其转换为正确的参数?
在cygwin上,我可以使用cygpath,但没有等价物,因为来自msys的某个人认为它不是必需的(即使有使用cygpath的cygwin脚本)。
发布于 2013-08-28 20:36:09
使用pwd -W
或从此处http://mingw.5.n7.nabble.com/enhanced-version-of-cygpath-td28556.html下载msys的cygpath
并使用cygpath -wa
发布于 2014-10-01 12:36:27
与上面的dmitri-rubinstein@类似,我对代码进行了一些清理,并添加了反向转换。
winpath() {
if [ ${#} -eq 0 ]; then
: skip
elif [ -f "$1" ]; then
local dirname=$(dirname "$1")
local basename=$(basename "$1")
echo "$(cd "$dirname" && pwd -W)/$basename" \
| sed \
-e 's|/|\\|g';
elif [ -d "$1" ]; then
echo "$(cd "$1" && pwd -W)" \
| sed \
-e 's|/|\\|g';
else
echo "$1" \
| sed \
-e 's|^/\(.\)/|\1:\\|g' \
-e 's|/|\\|g'
fi
}
unixpath() {
echo "$1" \
| sed -r \
-e 's/\\/\//g' \
-e 's/^([^:]+):/\/\1/'
}发布于 2013-03-15 22:10:54
我在msysgit中使用这个:
winpath() {
if [ -z "$1" ]; then
echo "$@"
else
if [ -f "$1" ]; then
local dir=$(dirname "$1")
local fn=$(basename "$1")
echo "$(cd "$dir"; echo "$(pwd -W)/$fn")" | sed 's|/|\\|g';
else
if [ -d "$1" ]; then
echo "$(cd "$1"; pwd -W)" | sed 's|/|\\|g';
else
echo "$1" | sed 's|^/\(.\)/|\1:\\|g; s|/|\\|g';
fi
fi
fi
}https://stackoverflow.com/questions/12015348
复制相似问题