qt - 使用 cmake 从源代码构建应用程序和 Qt

标签 qt cmake

我正在尝试构建一个使用 qt5.6 的应用程序,qt 和应用程序都是从源代码构建的(使用忍者生成器,在 Windows 上使用 visual studio 编译器,在 mac 上使用 clang)。

我被困在 find_package(Qt5Core ..) :当 Qt 还没有构建时,它不会被发现。而且因为没有找到,所以生成的cmake文件不完整。

我想我需要一个设置,它生成一个 ninja 文件,在构建时构建 Qt,然后在继续构建之前重新生成 ninja 文件(此时它会找到 qt)。

或者我可以从源代码构建 Qt+ 应用程序的任何其他方式,这样如果我在 Qt 中更改某些内容,它会自动重建。

我应该如何设置我的 cmake 文件来做到这一点?

最佳答案

您可以使用 CMake 的 ExternalProject命令从 CMake 中调用 CMake。您可以在那里指定依赖项,这样您的应用程序只会在 Qt 构建完成后构建。

我碰巧在这里有一个小例子,它使用 ExternalProject_Add 来构建一个库,然后是一个应用程序。在该示例中,库和应用程序的 CMake 在 make 时间被调用。

cmake_minimum_required(VERSION 3.0)

include(ExternalProject)

ExternalProject_Add(cmake_lib
    URL ../cmake_lib
    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
)

ExternalProject_Add(cmake_app
    DEPENDS cmake_lib
    URL ../cmake_app
    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
)

关于qt - 使用 cmake 从源代码构建应用程序和 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49799951/

相关文章:

windows - 如何调用QT_SCALE_FACTOR?

c++ - CMake 使库需要 cxx 标准

c++ - 使用基类的派生类值

Qt QWebView 加载链接某些 SSL 库时出错?

c++ - 如何在包含对象内部对象的QT中解析Json字符串

c++ - 在 Clion 中包含目录

c++ - 如何使用 Cmake 构建可执行文件,其中所有依赖项都包含在项目 DIR 中?

visual-studio - CMake 无法打开 "ucrtd.lib"

linux 交叉编译链接器问题, undefined reference `g_thread_init' 和 `org_freedesktop_DBus_request_name'

qt - 如何在 Qt 跨平台应用程序中启用自动更新?