环境:cmake-3.3.2
初学cmake,编写CMakeLists.txt 时,运用收集文件命令
file(GLOB <variable> [LIST_DIRECTORIES true|false] [RELATIVE <path>] [<globbing-expressions>...])
file(GLOB_RECURSE <variable> [FOLLOW_SYMLINKS] [LIST_DIRECTORIES true|false] [RELATIVE <path>] [<globbing-expressions>...])
过程中,会报如下错误:
运行:cmake --help-policy CMP0009
原因分析:
①CMake version 3.3.2 warns when the policy is not set and uses OLD behavior. Use
the cmake_policy command to set it to OLD or NEW explicitly. CMake版本 3.3.2当策略未设置并使用旧行为时发出警告。使用 cmake_policy命令将其显式设置为旧或新。
②红色标记处显示政策的OLD 行为已被否决,并可能在CMake的未来版本中删除。
因此报错的原因出现在这里,无法解决。
但可以通过另一种方式解决:
aux_source_directory 查找在某个路径下的所有源文件。
aux_source_directory(< dir > < variable >)
搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在指定的变量中。
注:在生成add_library链接库过程中,可能会产生如下错误:
因为无法决定用何种编译器,所以,需要加入SET_TARGET_PROPERTIES
当然要先把目标写上
add_library(xxx ${lualite_STAT_SRCS})
SET_TARGET_PROPERTIES(xxx PROPERTIES LINKER_LANGUAGE C)
这样就解决问题了。
更多推荐
解决CMake Error : file does not recognize sub-command GL0B or GL0B_RECURSE 原因分析
发布评论