我有一个项目,其中CMakeLists.txt
试图读取一个可能存在也可能不存在的文件。如果文件缺失,这并不是问题,脚本可以处理任何一种情况。这用于稍微调整编译环境,如果我们能检测到已知的Linux发行版:
file (READ /etc/redhat-release RHREL)
if (RHREL MATCHES "Red Hat Enterprise Linux Server release 6*")
# tweak for RHEL6
elseif (RHREL MATCHES "Red Hat Enterprise Linux Server release 7*")
# tweak for RHEL7
else()
# either read failed, or we didn't match a known RHEL release
# fallback to reasonable defaults
endif()
问题在于,当
file(READ...)
失败时,它似乎会使用SEND_ERROR
参数输出一条消息。这意味着我的配置会像我预期的那样继续进入捕获所有错误的else()
,但在配置结束后,CMake
拒绝生成Makefile
。我该如何运行
file(READ)
以便能够在本地处理错误并防止它们使整个配置失败?
CMAKE_HOST_SYSTEM
这个全局变量。我觉得你实际上不需要读取redhat-release
文件。 - Florianfile(...)
)。 - marack