【问题标题】:How to include an additional CMakeLists.txt如何包含额外的 CMakeLists.txt
【发布时间】:2013-06-18 04:44:21
【问题描述】:

假设我们在文件夹 /A 中的 CMakeLists.txt 中有一个命令调用 foo

foo 在文件夹/B 中的另一个 CMakeLists.txt 中定义。

如何从/A/CMakeLists.txt 中引用/B/CMakeLists.txt 以调用foo

我尝试将搜索路径设置为/B/CMakeLists.txt via:

  • CMAKE_INCLUDE_PATH
  • CMAKE_MODULE_PATH
  • CMAKE_SOURCE_DIR

但它们都不起作用。

CMake 仍然在抱怨 Unknown CMake command "foo".

【问题讨论】:

    标签: search include cmake


    【解决方案1】:

    这可以通过include 完成,这里有一些简单的例子:

    A/CMakeLists.txt 的内容

    function(foo)
        message(STATUS "heya")
    endfunction()
    

    B/CMakeLists.txt 的内容

    cmake_minimum_required(VERSION 2.8)
    include(${CMAKE_CURRENT_SOURCE_DIR}/../A/CMakeLists.txt)
    foo()
    

    现在,包含另一个 CMakeLists.txt 也将运行该文件中的所有内容,因此如果 B/CMakeLists.txt 中有目标,您可能希望避免这样做

    如果您可以修改您的代码,最好在调用add_subdirectory 之前在“顶级”CMakeLists.txt 中定义您的函数。

    【讨论】:

      【解决方案2】:

      如果此文件仅包含函数定义,则不应将其称为 CMakeLists.txt,而应将其称为 some_adequate_name。cmake

      您可以使用include 将其包含在需要这些函数定义的地方。

      【讨论】:

        猜你喜欢
        • 2022-07-14
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        • 2015-08-02
        • 2018-05-28
        • 1970-01-01
        • 2013-11-24
        • 1970-01-01
        相关资源
        最近更新 更多