如何使用Qt Creator界面和设置传递cmake参数

4

我正在尝试弄清楚如何使用Qt Creator的设置并传递一些CMake参数。假设我有一个应用程序,可以像这样在终端中构建:

cmake .. -DQTDIR=/home/myCustomBuildStuff 
    -DLD_LIBRARY_PATH=/home/myCustomBuildStuff 
    -DCMAKE_INCLUDE_PATH=/home/myCustomBuildStuff/include
    # etc.

您可以看到,我正在使用我的自定义构建的Qt(加上一些其他库)。当我使用终端构建时,一切正常。
但现在我想尝试使用Qt Creator,并通过使用Qt Creator设置传递所有CMake参数。我尝试使用Kits中可以找到的CMake Configuration设置。我尝试修改Build Settings,并将我的参数直接添加到Build Steps和/或上面的CMake表中。但这些都没有帮助,我的应用程序无法包含我自定义构建的main.cpp中的QtWidgets。
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5:-1: error: 
    version 'Qt_5.9' not found (required by home/myCustomBuiltStaff/bin/uic)

在上面的错误中,路径显然是错误的(它需要在/home/myCustomBuiltStuff/文件夹中搜索)。但是我如何通过使用Qt Creator设置来传递该路径?
请注意,我无法触及CMake文件的内容,只想让它像在终端中传递所有路径参数给CMake时一样构建。

你可以尝试禁用/删除默认的构建步骤,并将你的构建命令添加为“自定义进程步骤”。这应该会给你与在终端中运行相同的结果。 - m7913d
谢谢,我能够通过使用自定义步骤来重现构建。 - vicrucann
我非常怀念早期Qt Creator(v3.5)中可用的CMake向导,如此文章所演示的那样! - normanius
1
我刚刚在Qt Creator的问题跟踪系统中发布了一个问题(https://bugreports.qt.io/browse/QTCREATORBUG-19479)。让我们看看他们会如何回应。 - normanius
2个回答

6
所以,我按照评论中给出的建议进行操作,并添加了自己的构建步骤,以确保我正确传递了所需的CMake参数。我找不到通过使用Qt Creator的设置和菜单来传递它们的其他方法。
以下是我执行的步骤列表:
1. 转到“项目”并选择要编辑的“构建”。如果您有多个配置,则必须针对每个重复以下步骤。 2. 禁用或删除默认的CMake步骤,通常类似于“cmake --build .--target all” 3. 选择你的“构建目录”。 4. 添加新的“自定义进程步骤”,将“Command”设为“cmake”,将“Arguments”设为您的CMake参数;通常您会将“工作目录”保留为默认值。 5. 添加新的“自定义进程步骤”,将“Command”设为“make”,并添加任何必要的参数(例如“LD_LIBRARY_PATH”)。 6. 进入并编辑“运行”设置:确保“可执行文件”指向您的“cmake”和“make”刚创建的文件。在那里,您还可以添加任何必要的命令行参数。

0

这是我使用的版本4.3.1。如果还没有完成,您应该拥有最新版本的qtcreator。

文件->打开:

选择您的项目的CMakeLists.txt文件。选择您的目标,然后您应该能够至少打开该项目。

现在点击“项目”。确保您已经选择了“构建和运行” - > “构建”,并在Cmake下单击“添加” - > “字符串”或“目录”。在您的情况下,目录更有意义。在左侧放置定义,当然不包括“-D”,右侧放置值。

为要定义的每个变量重复此步骤,然后单击“应用”

如果这样不起作用,我会尝试将CMAKE_EXE_LINKER_FLAGS设置为-L / home / myCustomBuildStuff

提示:如果您正在使用构建步骤下的makefiles,则可以将VERBOSE = 1参数传递给toolparameters以查看它是否有效。这样,您的输出将显示变量是否真正传递。

提示:记得激活“高级”选择,以便您看到定义fo Cmake的更多甚至所有变量。


我已经尝试将我的参数添加到您描述的CMake表中,但这并没有像我在原始问题中所述那样起作用(如果不清楚,很抱歉)。不幸的是,链接器标志也没有帮助。我尝试了评论中提到的方法,它似乎有效。不确定是否可以通过编辑设置来实现,但我现在会坚持使用有效的方法。 - vicrucann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接