解决LLVM中CMake 报错 “Found unknown source file”
LLVM不会拒绝隐藏文件。 一些编辑器在与文件相同的目录中创建备份。但是LLVM不允许开发者在项目目录中存放非本项目文件(或者是没有加入到cmake工程中的文件)。如果存在这样的文件(例如:我在llvm/lib/IR目录中存放了一个Trampoline.cpp,但没有加入cmake工程中)将会有如下报错:
正如上图所示,cmake会报错并终止创建cmake工程。
如果要允许这样的文件存在,需要对llvm/cmake/modules/LLVMProcessSources.cmake
文件做如下修改:
100 # Don't reject hidden files. Some editors create backups in the
101 # same directory as the file.
102 if (NOT "${fn}" MATCHES "^\\.")
103 list(FIND LLVM_OPTIONAL_SOURCES ${entry} idx)
104 if( idx LESS 0 )
105 list(FIND listed ${gp} idx)
106 if( idx LESS 0 )
107 if(ARG_SOURCE_DIR)
108 set(fn_relative "${ARG_SOURCE_DIR}/${fn}")
109 else()
110 set(fn_relative "${fn}")
111 endif()
112 --- message(SEND_ERROR "Found unknown source file ${fn_relative}
112 +++ message(WARNING "Found unknown source file ${fn_relative}
113 Please update ${CMAKE_CURRENT_LIST_FILE}\n")
114 endif()
115 endif()
116 endif()
117 endforeach()
118 endfunction(llvm_check_source_file_list)
将第112行中的 SEND_ERROR
改为 WARNING
.