【发布时间】:2018-01-30 14:52:07
【问题描述】:
简而言之:
cmake 库目标是否有任何首选的命名约定 - 特别是在使用命名空间时?
注意:
除非确实有客观原因,否则我不会询问个人喜好,而是询问是否存在“官方”(例如套件推荐)或已建立(可能会偏离)惯例。
详情:
假设我有一个库/框架foo,其中包含单独的组件bar 和baz。到目前为止,我的命名约定是这样的:
add_library(foo-bar src1.cpp, scr2.cpp)
add_library(foo-baz src3.cpp, src4.cpp)
现在我想使用命名空间 (::) 约定添加别名目标。例如
add_library(Foo::Bar ALIAS foo-bar)
add_library(Foo::Baz ALIAS foo-baz)
(当然问题也延伸到导出集,但我不想让问题复杂化)
然而,我无法真正找到的是,这些目标是否有首选甚至官方的命名约定。
我看到的东西:
-
命名空间部分:
- 有些项目似乎首字母大写,有些则不是(前者似乎更常见)
-
组件部分:
- 在某些项目中,组件名称与二进制名称相同
- 带或不带“lib”前缀(libfoo-bar 与 foo-bar)
- 有或没有命名空间(foo-bar vs bar)
- 有些项目首字母大写
- 有些项目使用 CamelCase some snake_case,即使二进制文件或项目名称不遵循这些约定。
我想主要的问题是库一般没有命名约定,因此很难在 CMake 中提出命名约定,但至少命名空间和组件的第一个字母的大写似乎很常见,所以我想知道在未来的项目中是否应该遵循一些指导方针。
【问题讨论】: