Conan 配合 Clangd + CMake

  1. 用官方模版初始化项目

    conan new cmake_exe -d name=myapp -d version=0.1
    
  2. conanfile.py 中的 generate 替换为

    def generate(self):
        deps = CMakeDeps(self)
        deps.generate()
        tc = CMakeToolchain(self)
        
        # 强制注入头文件路径 (解决 IDE 高亮红线)
        for dep in self.dependencies.values():
            for include_path in dep.cpp_info.includedirs:
                tc.extra_cxxflags.append(f"-I{include_path}")
            
            # 使用 cache_variables 注入链接标志 (解决链接问题)
            link_flags = []
            for lib_path in dep.cpp_info.libdirs:
                link_flags.append(f"-L{lib_path}")
            for lib in dep.cpp_info.libs:
                link_flags.append(f"-l{lib}")
            for framework in dep.cpp_info.frameworks:
                link_flags.append(f"-framework {framework}")
                
            if link_flags:
                current = tc.cache_variables.get("CMAKE_EXE_LINKER_FLAGS", "")
                tc.cache_variables["CMAKE_EXE_LINKER_FLAGS"] = f"{current} {' '.join(link_flags)}"
    
        tc.generate()
    
  3. conan install . --build=missing
    cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=build/Release/generators/conan_toolchain.cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Release
    
    ln -s build/Release/compile_commands.json compile_commands.json
    

    这一步将会生成 compile_commands.json,并且正确设置链接标志。

  4. conan build .
    
posted @ 2026-03-04 17:22  Wenqingyu  阅读(27)  评论(0)    收藏  举报