小编ari*_*ert的帖子

如何使用 CMake 按需构建 wxwidgets 并与之链接

我有以下情况:

  • 我正在开发一个依赖于许多第三方库的应用程序,其中包括 wxwidgets
  • 我使用 Linux 作为我的构建主机系统为多个目标配置(x86、arm、Linux、Windows)构建应用程序
  • 由于上述多个目标配置,我选择使用 CMake 的 ExternalProject_Add 函数从源代码构建这些第三方库。
  • 第三方库是在与我的应用程序的 CMAKE_BINARY_DIR 分开的位置“按需”构建的,这样我就可以为我的应用程序擦除构建树,而无需重建第三方库(需要很长时间)。
  • 第三方库的位置根据我构建它们的目标配置而有所不同(显然)。

我对 CMake 很陌生,我目前面临的问题是:我的应用程序中的源文件找不到 wx 包含文件,我需要设置正确的链接器标志才能将我的应用程序链接到 wxwidgets。

这似乎是由实用程序“wx-config”处理的,该实用程序在使用 --cppflags 或 --libs 标志运行时提供该信息作为输出。但是,我无法弄清楚如何捕获该输出并将其附加到我从 CMakeLists.txt 文件设置的包含目录和链接库中。

所以基本上我想要的是。

  1. 为当前目标配置构建 wxwidgets(如果它不存在)
  2. 运行 wx-config --cppflags 和 --libs 以找出当前目标配置的正确包含目录和链接器标志
  3. 在构建属于我自己的应用程序的目标时使用步骤 2 中的信息

到目前为止,我已经尝试过这样的事情:

# Set a target-configuration-specific location 
set(wxwidgetsTop ${MYPROJECT_EXTERNAL_DIR}/wxwidgets/wxwidgets_${MYPROJECT_CURRENT_TARGET_CFG})

# Build the project
ExternalProject_Add( wxWidgetsExternal
  PREFIX ${wxwidgetsTop}
  URL ${MYPROJECT_EXTERNAL_DIR}/tarballs/wxWidgets-3.0.2.tar.bz2
  SOURCE_DIR ${wxwidgetsTop}/src/wxwidgets
  CONFIGURE_COMMAND ${configure_cmdline}
  BUILD_COMMAND make -j${MYPROJECT_NCPU}
  INSTALL_COMMAND make install
  )

# Create a wxwidgets target to be used as a dependency …
Run Code Online (Sandbox Code Playgroud)

c++ wxwidgets build cmake

5
推荐指数
2
解决办法
4037
查看次数

标签 统计

build ×1

c++ ×1

cmake ×1

wxwidgets ×1