You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Conan 2.0中指定非源码根目录的CMakeLists.txt路径?

在Conan Recipe中指定CMakeLists.txt的路径

当你的CMakeLists.txt不在源码根目录时,可通过以下两种方式在Conan Recipe中指定其路径:

方式1:直接在build()方法中设置source_folder

在conanfile.py的build()函数里,给CMake实例指定目标子文件夹路径:

from conans import ConanFile, CMake  # Conan 1.x
# 若用Conan 2.x则替换为:from conan import ConanFile; from conan.tools.cmake import CMake

class YourRecipeConan(ConanFile):
    # 此处保留你的其他配置(name, version, settings等)

    def build(self):
        cmake = CMake(self)
        # 指定CMakeLists.txt所在的相对路径
        cmake.source_folder = "src/cmakelistsfolder"
        cmake.configure()
        cmake.build()

或者更简洁地在configure()时直接传入参数:

def build(self):
    cmake = CMake(self)
    cmake.configure(source_folder="src/cmakelistsfolder")
    cmake.build()

方式2:使用CMakeToolchain(Conan 2.x推荐)

对于Conan 2.x,推荐通过CMakeToolchain传递配置,确保兼容性和可扩展性:

from conan import ConanFile
from conan.tools.cmake import CMake, CMakeToolchain

class YourRecipeConan(ConanFile):
    # 你的其他配置项

    def generate(self):
        tc = CMakeToolchain(self)
        # 设置CMake源码目录为目标子文件夹
        tc.variables["CMAKE_SOURCE_DIR"] = f"{self.source_folder}/src/cmakelistsfolder"
        tc.generate()

    def build(self):
        cmake = CMake(self)
        cmake.configure()
        cmake.build()

关键说明

  • 上述路径均为相对于Conanfile所在源码根目录的相对路径
  • Conan 1.x和2.x的API略有差异,注意导入语句的对应关系
  • 本质都是告诉CMake工具链去哪里查找CMakeLists.txt文件

内容的提问来源于stack exchange,提问作者Hans123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:48:17