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

CMake编译未用find_package(glog)仍可运行的原因探究

为什么没加find_package(glog)也能成功编译运行?

问题描述

我在项目中使用glog,按照google/glog官方文档规则设计了一套日志系统,编写的CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.0.2)
project(glog_system)
add_compile_options(-std=c++11)
add_executable(glog_example
    example/example1.cpp
    example/g_logger.cpp
)
target_include_directories(glog_example PUBLIC
  example
)
target_link_libraries(glog_example
    glog
    stdc++fs
)

令我困惑的是,即便没有在CMakeLists.txt中添加find_package(glog),依然能成功构建日志系统并运行可执行文件,想知道这背后的原因,求相关提示。

更新:项目目录结构

- build/
- example/
  - example1.cpp
  - g_logger.cpp
  - g_logger.h
CMakeLists.txt

可能的原因

  • glog已被安装到系统标准路径(如/usr/include、/usr/lib):CMake链接阶段会默认搜索系统标准库路径,编译器也会自动查找标准路径下的头文件,因此直接在target_link_libraries中指定glog就能找到对应的库文件,编译时也能找到头文件。
  • 环境中已存在全局的glog配置:可能你之前通过其他项目、系统包管理器(如apt、yum)安装glog时,已经自动配置了CMake的全局变量或系统库搜索路径,使得CMake无需显式调用find_package就能定位到glog。
  • 编译器本身能找到glog:如果glog是通过系统包管理器安装的,系统会自动将其头文件和库路径加入到编译器的默认搜索列表中,CMake只是调用编译器完成编译链接,因此不需要额外的find_package配置。

内容的提问来源于stack exchange,提问作者RyanChen.YLC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:10:28