我们有一个提供CMakeList.txt
file的C ++库,它带有以下内容:
cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR)
project(cryptopp)
set(cryptopp_VERSION_MAJOR 5)
set(cryptopp_VERSION_MINOR 6)
set(cryptopp_VERSION_PATCH 5)
include(GNUInstallDirs)
...
根据GNUInstallDirs
的CMake手册:
提供为GNU软件定义的安装目录变量...
... INCLUDEDIR - C header files (include) OLDINCLUDEDIR - C header files for non-gcc (/usr/include) ...
我们的政策是安装到/usr/local
;并且不要安装到/usr
。在某些平台上将库安装到/usr
会破坏库,因为编译器会将/usr/include
中的所有标头视为C文件,而 不是 C ++标头文件。 OpenBSD可以打破我们,但是当它们安装到/usr/local/include
时,它会按预期处理库头文件。
我执行很多的跨平台测试,我不知道任何Unix兼容的发行版无法支持/usr/local
中的软件安装。我知道,当/usr/local
可用时,我们可以安装到GNUInstallDirs
。
我访问了CMake modules,但我看不到include(LocalInstallDirs)
以外的其他选择。我们如何指定与include(GNUInstallDirs)
类似的内容而不是results
?