如何在 Qt 中使用 GeographicLib
Posted
技术标签:
【中文标题】如何在 Qt 中使用 GeographicLib【英文标题】:How to use GeographicLib in Qt 【发布时间】:2019-12-11 16:28:50 【问题描述】:您好,我是 qt 和 CMake 的新手,这可能是一个简单的解决方法,但我一整天都在苦苦挣扎。
我正在尝试在 Qt 项目中使用 GeographicLib。我安装了 CMake 并从 https://geographiclib.sourceforge.io/html/intro.html 下载了文件。在 Geographiclib 网站上有Building the library for use with Qt 的指南。您必须运行几个命令:
export PATH="`cygpath -m c:/QtSDK/mingw/bin`:$PATH"
mkdir BUILD
cd BUILD
cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program Files/GeographicLib" ..
mingw32-make
mingw32-make install
运行上述内容后,我得到以下信息:
C:\Users\koos> export PATH="`cygpath -m c:/QtSDK/mingw/bin`:$PATH"
'export' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\koos> mkdir BUILD
A subdirectory or file BUILD already exists.
C:\Users\koos> cd BUILD
C:\Users\koos\BUILD> cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program
Files/GeographicLib" ..
CMake Error: The source directory "C:/Users/koos" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
the website 说如果 cmake 抱怨你必须运行以下命令:
env PATH="$( echo $PATH | tr : '\n' |
while read d; do test -f "$d/sh.exe" || echo -n "$d:"; done |
sed 's/:$//' )" \
cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program Files/GeographicLib" ..
然后我得到:
C:\Users\koos\BUILD> env PATH="$( echo $PATH | tr : '\n' |
'env' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\koos\BUILD> while read d; do test -f "$d/sh.exe" || echo -n "$d:"; done |
The syntax of the command is incorrect.
C:\Users\koos\BUILD> sed 's/:$//' )" \
'sed' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\koos\BUILD> cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program
Files/GeographicLib" ..
我正在使用 Desktop Qt 13.0 MinGw 64 位。我认为以下有问题:“”mingw32-make“” (是 32 而不是 64,但我尝试更改它但没有得到任何地方)。有人可以向我解释一下我应该如何在 Qt 中安装 Geographic lib 库(也许如何使用 cmake qui 来完成任务,因为我对 cmake 不太了解)
编辑:
所以我安装了 cygwin,现在它给了我以下信息:
koos@computer ~
$ mkdir BUILD
export PATH="`cygpath -m C:\Qt\Tools\mingw730_64\bin`:$PATH"
cd BUILD
cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program
Files/GeographicLib" ..
mingw32-make
mingw32-make install
koos@computer ~
$ mkdir BUILD
koos@computer ~
$ cd BUILD
koos@computer ~/BUILD
$ cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program
Files/GeographicLib" ..
CMake Error: The source directory "C:/cygwin64/home/koos" does not appear
to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
koos@computer ~/BUILD
$ mingw32-make
-bash: mingw32-make: command not found
koos@computer ~/BUILD
$ mingw32-make install
-bash: mingw32-make: command not found
从 GeographicLib 的***目录运行后,出现以下错误:
CMake Error: CMake was unable to find a build program corresponding to
"MinGW Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to
select a different build tool.
CMake Error: CMake was unable to find a build program corresponding to
"MinGW Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to
select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
C:\Qt\Tools\mingw730_64\bin
路径确实包含 mingw32-make。
感谢您的耐心等待!
问候 库斯
【问题讨论】:
【参考方案1】:来自 GeographicLib 站点的 instructions 说要使用 Cygwin 运行命令:
如果您在 Windows 上为 Qt 使用 mingw 编译器,那么您需要使用 mingw 构建 GeographicLib。 您可以在 cygwin 下使用 cmake 完成此操作,例如, ...
export
、env
和 sed
等命令并非 Windows 原生命令,而是 Linux 命令。这些必须在 Cygwin 命令提示符下运行。你的问题没有在你的设置中提到 Cygwin,所以我猜你要么没有安装它,要么没有使用它。尝试为您的机器安装 Cygwin 并从 Cygwin 命令提示符中运行列出的命令。
这些说明假设您从 GeographicLib 包的 *** 目录运行命令,因此您必须先导航到该目录。更新后的命令如下所示:
cd C:/path/to/your/GeographicLib
export PATH="`cygpath -m c:/QtSDK/mingw/bin`:$PATH"
mkdir BUILD
cd BUILD
cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program Files/GeographicLib" ..
mingw32-make
mingw32-make install
【讨论】:
感谢我安装了 cygwin 并在 cygwin 终端中运行了命令,但仍然出现错误。我用错误更新了我的问题 @Koos 假设您从您安装的 GeographicLib 包的 ***目录 运行这些命令。看来您只是从主目录运行它们。 您必须将您的 工作目录 更改为包的***目录(无论您下载它并将其放在计算机上的哪个位置)。将cd
命令与cd C:/path/to/your/GeographicLib
类似。只有这样,您才能运行说明中的命令。我将更新答案以显示这一点。
Cygwin 不知道如何找到您的 MinGW 可执行文件(特别是 mingw32-make
)。 export
命令应该设置这个,那么路径 c:/QtSDK/mingw/bin
是否存在于您的机器上,并且包含 mingw32-make
可执行文件?
路径 C:\Qt\Tools\mingw730_64\bin
包含 mingw32-make.exe 但更改路径后出现此错误:CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles"
【参考方案2】:
在 Cygwin 中键入以下命令对我有用:
set CC=C:/Qt/Tools/mingw730_64/bin/x86_64-w64-mingw32-gcc
set CXX=C:/Qt/Tools/mingw730_64/bin/x86_64-w64-mingw32-g++
cd C:/path/to/my/GeographicLib
rm -rf BUILD; mkdir BUILD; cd BUILD
export PATH="`cygpath C:/Qt/Tools/mingw730_64/bin`:$PATH"
cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program Files/GeographicLib" ..
mingw32-make
mingw32-make install
env PATH="$( echo $PATH | tr : '\n' |
while read d; do test -f "$d/sh.exe" || echo -n "$d:"; done |
sed 's/:$//' )" \
cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX="C:/Program Files/GeographicLib" ..
mingw32-make
cygstart --action=runas mingw32-make install
注意:请确保您已安装 Cmake,您可以下载适用于 windows here 的安装程序。不要安装 cygwin 版本的 cmake,因为它没有 MinGW Makefiles 生成器,并确保选中 cmake 安装程序中的“添加到系统路径”复选框。安装 cygwin 时,请确保选择“make”(make 实用程序的 gnu 版本)包。
【讨论】:
以上是关于如何在 Qt 中使用 GeographicLib的主要内容,如果未能解决你的问题,请参考以下文章
GeographicLib 的VS2013项目生成以及Geoid Height 提取
GeographicLib 的VS2013项目生成以及Geoid Height 提取