首页 > 解决方案 > 将空源文件添加到 STATIC 库的原因?

问题描述

我在 C++ 中看到过很多这样的情况,开发人员在 CMake 中向库中添加了一个空源文件。这里有一个例子,这里有空的源文件。CMake 文件有这一行:

# build the library
add_library(${PROJECT_NAME} STATIC src/dependency-tracker.cc)

仅当文件夹中没有其他源文件时才会出现这种情况src,因此库将是“仅标题”。他们为什么这样做呢?


我所指的目录结构:

.
├── CMakeLists.txt
├── include
│   └── okvis
│       └── kinematics
│           ├── implementation
│           │   └── Transformation.hpp   <- header only implementation
│           ├── operators.hpp
│           └── Transformation.hpp
├── src
│   └── dependency-tracker.cc   <- empty source file
└── test
    ├── runTests.cpp
    └── TestTransformation.cpp

标签: c++cmake

解决方案


该项目将 CMake 2.8.11 指定为最低要求:

cmake_minimum_required(VERSION 2.8.11)

此版本缺少INTERFACE类型,现在是仅标头库的标准表示。(对 INTERFACE 库的支持最早出现在 CMake 3.0 中)。

如果没有INTERFACE可用的库,带有单个空源文件的普通库看起来是一个不错的选择。

我不知道为什么dependency-tracker.cc为空源文件选择名称。或许,这个名字对于项目的开发者来说有一些特殊的意义。


推荐阅读