【问题标题】:CMake: Depending on Visual Studio projectsCMake:取决于 Visual Studio 项目
【发布时间】:2014-06-27 16:20:47
【问题描述】:

我的项目目前依赖于一个库 (PJSIP),该库与用于 *NIX 的 Autotools 构建脚本和适用于 Windows 的 Visual Studio 项目文件一起分发。

我的项目目前使用 CMake 构建系统。当前脚本是特定于 Linux 的:它假定 PJSIP 已作为先决条件安装(在系统范围的库位置,由包管理器管理)并且仅指定 target_link_libraries(pj pjnath pjlib-util)。这是 Linux 软件的规范。

我想让我的项目也适用于 Visual Studio。 设置此依赖项的规范 Windows 方法是什么?是否应该在某些全局 Visual Studio 设置中进行配置?还是应该将 PJSIP 放在子目录中,并让 CMake 自己调用正确的构建系统?

【问题讨论】:

    标签: visual-c++ visual-studio-2008 cmake


    【解决方案1】:

    要查找依赖的第 3 方库,请遵循 CMake 指南,http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries

    一般来说,CMake 更喜欢绝对路径。在我评估 CMake 的过程中,我发现它没有规范的方式来引用 Visual Studio 中的依赖库。他们的信息是 CMake 应该在每个开发人员系统上运行,以便为该特定目标站设置构建环境。因此,我永远无法直接从 CMake 创建可以版本控制的解决方案文件,因为路径是绝对的。有可能,但只有在创建后修改 CMake 项目文件之后。

    在创建构建系统之前,CMake 软件需要在我们的开发人员站上获得批准,因此我曾多次努力解决这个问题。

    最后,我对所有依赖项目的修改 CMakeLists.txt 文件进行了版本化,这些文件找到了正确的位置的规范路径,并警告任何构建的人(这些是依赖于仅在版本上构建的第三方库更改)必须安装 CMake。

    【讨论】:

    • 我如何“找到正确的规范路径”到 PJSIP?它应该安装在哪里以便 CMake 可以找到它?
    • 你可以安装一个cmake find 模块。有一些例子,但基本看起来像FIND_PACKAGE(PJSIP),并在你的 CMakeModules 中创建模块“FindPJSIP.cmake”。这是你的意思吗?
    • 我想是的。所以对于 Windows 来说并没有太大的不同:库仍然安装在系统范围内(在哪里?),你必须在配置时找到它们。正确的?现在只需找到FindPJSIP.cmake...
    • 这是一个这样的例子:CMake:How To Find Libraries
    • 在 Windows 中自动化程度通常较低。 nix's,我不是很熟悉,所以我可能会脱节,有包管理器,使依赖项安装变得简单。对于 Windows 而言,您*通常必须在源代码控制中包含所有依赖项的源代码和 bin。
    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多