【问题标题】:CLion CMakeLists.txt library paths for different build systems不同构建系统的 CLion CMakeLists.txt 库路径
【发布时间】:2017-01-15 17:25:31
【问题描述】:

我有一个当前在 XCode 上运行的项目。 随着我们团队的扩大,我们在 Ubuntu 上有 2 名开发人员。所以我们尝试切换到 CLion。

现在的问题是,包含路径完全不同,“find_package”不起作用。

有没有办法在不为每个构建系统定义路径的情况下解决这个问题?

【问题讨论】:

    标签: c++ cmake clion


    【解决方案1】:

    有几种方法:

    1. 在工作区设置中设置标志 -DCMAKE_PREFIX_PATH=。确保使用 .gitignore 工具来防止推送忽略 .idea/ 文件夹中不必要的文件。

    2. 有一个 CMakeLists.txt 来提供环境,并让 CMakeLists.txt 包含您项目的 CMakeLists.txt。

    第二种方式可能更易于管理,因为它允许您:

    a) 明确定义每个编译环境。

    b) 避免因环境特定的噪音污染项目的 CMakeLists.txt 文件。

    通常,当您构建和安装库时,它们会安装在以下目录结构中:

    <base directory such as /usr/local>/bin

    <base directory such as /usr/local>/lib

    <base directory such as /usr/local>/include

    -DCMAKE_PREFIX_PATH= 应指定“<base directory such as /usr/local>”部分。不是“/include”部分。

    如果您没有按正常结构安装所需的库,那么所有的赌注都没有了,您可能必须明确指定包含和库目录。

    此时,我可以指导您阅读文档吗?

    https://cmake.org/cmake/help/v3.7/command/find_package.html?highlight=find_package

    https://cmake.org/Wiki/CMake_Useful_Variables

    【讨论】:

    • 谢谢!因此,如果我定义 -DCMAKE_PREFIX_PATH,CMake 找不到头文件。即使我添加了包含路径。头文件还有其他标志吗?
    • @fredalex 更新了答案。如果不了解更多有关如何构建先决条件的信息,很难为您提供更多帮助。
    • 谢谢!我遇到了 boost 和 openssl 的问题。所以一切都在 Ubuntu 上运行。在 Mac 上,它们与 Homebrew (/usr/local/Cellar/openssl/1.0.2d_1) 一起安装。如果我将这些目录添加到 DCMAKE_PREFIX_PATH,我仍然会收到错误,即找不到头文件。 (如果我手动将它们添加到包含路径中,一切正常)
    • @fredalex homebrew... :( 这就是为什么我为 cmake 创建了健全的构建库...github.com/madmongo1/sanity 正在进行中的工作,但它节省了我的时间...
    • 由于缺少一些文档,您能否给我一个简短的提示,这是关于什么以及我是如何开始的?非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2015-01-01
    • 2013-11-10
    相关资源
    最近更新 更多