我已经将基于CMake的项目导入到Ubuntu中。它使用没有QML组件的普通C++。当我尝试运行它时,它不会部署到设备上,而是在桌面上运行(失败,报告它找不到armhf库),即使我选择了armhf和“工具包”选项卡,我的设备被选择为当前的工具包,左下角的工具提示显示应用程序将安装在设备上。
当我在项目设置中打开Run选项卡时,基于CMake的项目与基于QMake的项目的不同之处在于它有“命令行参数”和“当前工作目录”字段,但不“如果安装了重写应用程序”和“调试后卸载应用程序”(我现在不记得确切的文本)。由此,我得出结论,Ubuntu将我的应用程序视为桌面目标而不是Ubuntu。什么标志着一个基于CMake的项目作为Ubuntu目标的fomr?
有没有可能在设备上不使用QML运行基于CMake的项目?SDK没有此用例的模板:所有基于CMake的模板都使用QML,唯一的普通C++项目(QtQuick应用程序)使用QMake。
我在基于QMake的项目中没有这样的问题,目前我使用CMake来构建一个库,而不是可执行文件,然后将它与虚拟QMake项目链接到可执行文件中。但这似乎是个骗局。
发布于 2016-03-30 17:22:40
好的,如果您正在使用桌面工具包,而cmake抱怨它找不到armhf工具,那么您可能一开始就没有在桌面上安装cmake (我们试图解决的依赖项存在一个问题),而且QtCreator正在使用您为设备支持而创建的单击色度之一的cmake安装。
那么该怎么做呢:
没有必要更改设备的工具包,因为这些设备在每次启动时都会自动检查。
如果您想要打包您自己的cmake项目,您需要确保它为电话正确打包。最好的方法是查看一个原始的ubuntu模板,看看它是如何完成的。
发布于 2016-04-02 15:29:02
好吧,经过大量的实验,我发现我做错了什么。
因此,要使Ubuntu创建一个在设备上运行基于CMake的项目的配置,您只需要在UBUNTU_MANIFEST_FILE中设置CMakeLists.txt变量,并且它需要在内部显式地标记缓存。当您知道Ubuntu QtCreator插件的工作原理时,这是很明显的,但否则就不那么明显了。
所以,只要加上
set(UBUNTU_MANIFEST_PATH "manifest.json" CACHE INTERNAL "Path to manifest file")给你的CMakeLists.txt,你就快好了。
但是,我也遇到了一个问题,如果我将"${CMAKE_SOURCE_DIR}/manifest.json“指定为UBUNTU_MANIFEST_PATH,则这将无法工作,即使文件就在那里。
糟糕的是,Ubuntu仍然会为项目创建两个运行配置。第一个是默认的,它的名称基于可执行目标的名称,它仍然尝试在桌面上运行armhf代码。我觉得是个虫子。
第二个名称取决于您在.desktop文件的“钩子”部分所写的内容。如果该名称等于可执行名称,那么该配置将添加"2“(即cmake_test2)。第二种配置是要使用的--它在设备上运行项目,但您必须在"Projects“页面的" run”部分中选择它--默认情况下,会选择错误的运行配置。
总之,Ubuntu中的CMake支持似乎仍然有些脆弱/错误。
https://askubuntu.com/questions/751223
复制相似问题