在我的CMake脚本中,我想检查系统上是否有一个文件,如果有,就对它执行某些操作,否则使用默认文件执行某些操作。以下是代码:
find_file(
${project_name}_${customer}_config
${ROOT}/configuration/${customer}/configuration.${project_name}.xml
)
if(NOT ${${project_name}_${customer}_config} STREQUAL
${project_name}_${customer}_config-NOTFOUND )
configure_file(${ROOT}/configuration/${customer}/configuration.${project_name}.xml
${CMAKE_CURRENT_BINARY_DIR}/conf/configuration.xml)
else()
configure_file(${FAPP_ROOT}/configuration/Default/configuration.${project_name}.xml
${CMAKE_CURRENT_BINARY_DIR}/conf/configuration.xml)
endif()
但是看起来,这并不起作用。
在CMake中检查文件是否存在的正确方法是什么?
EXISTS
并不能像它所声称的那样正常工作。如果所检查的文件无法读取或写入,则会返回false,即使该文件可见。这是一个令人沮丧的错误,因为有时候这可能非常有用,例如确定某个设备文件是否存在。 - Philipposif (EXISTS "..." AND NOT IS_DIRECTORY "...")
,因为EXISTS
也会在目录上返回true! - Andryif (EXISTS "...")
会返回true。这里是文档。 - Kevin