CMake在使用include包含.cmake文件的坑

通常我们会复用一些cmake指令(比如将某些指令封装为函数),将其写到某一个.cmake文件中,然后在我们的CMakeLists.txt使用include命令把.cmake文件包含进来使用里面的函数等。

本例子目录结构:

.
├── build
├── cmake
│   └── test.cmake
└── CMakeLists.txt

test.cmake文件内容增加一个打印字符串的函数:

function(print_string str)
    message("str=${str}")
endfunction(print_string)

 

在CMakeLists.txt中进行include然后调用函数。

包含方式有两种:

1. 直接包含路径及.cmake文件名

2. 先设置CMAKE_MODULE_PATH变量,再包含文件(**不要带.cmake文件扩展名,带了会提示找不到**)

cmake_minimum_required(VERSION 3.5)

project(cmake_test)

#方式一:直接包含路径及.cmake文件
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/test.cmake)

#方式二:先设置CMAKE_MODULE_PATH变量,这个变量是定义.cmake文件的搜索目录的
# set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/)
# include(test)  ##不要写成test.cmake

print_string("cmake test")

 

你可能感兴趣的:(cmake)