CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的。指令是大小写无关的,参数和变量是大小写相关的。但推荐全部使用大写指令。符号 # 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。
自己写了一个小例子,包含了静态库和动态库以及基本的依赖关系。
按照目录结构加入文件(筛选器)
#按目录结构加入文件
macro(create_filters source_files)
if(MSVC)
# 获取当前目录
set(current_dir ${
CMAKE_CURRENT_SOURCE_DIR})
foreach(src_file ${
${
source_files}})
# 求出相对路径
string(REPLACE ${
current_dir}/ "" rel_path_name ${
src_file})
# 删除相对路径中的文件名部分
string(REGEX REPLACE "(.*)/.*" \\1 rel_path ${
rel_path_name})
# 比较是否是当前路径下的文件
string(COMPARE EQUAL ${
rel_path_name} ${
rel_path} is_same_path)
# 替换成Windows平台的路径分隔符
string(REPLACE "/" "\\" rel_path ${
rel_path})
if(is_same_path)
set(rel_path "\\")
endif(is_same_path)
# CMake 命令
source_group(${
rel_path} FILES ${
src_file})
endforeach(src_file)
endif(MSVC)
endmacro(create_filters)
#用法
#所有文件保存在一个变量中
file(GLOB_RECURSE all_files *.h *.cpp *.c *.cc)
create_filters(all_files)
add_executable(MFCDemo
${
all_files}
)
根据debug和release自动区分表示debug和release文件夹
#debug版本$(Configuration)表示debug文件夹
link_directories(${
PROJECTS_PATH}/out/$(Configuration))
将当前目录添加到环境变量中
可以用bat命令
setx ZYB_MEDIA_DIRECTORY