CMAKE_SOURCE_DIR:顶层CMakeLists.txt所在的目录
PROJECT_SOURCE_DIR:当前工程的源码目录
PROJECT_BINARY_DIR:当前工程的编译输出目录
如果一个顶层目录下只有一个工程,那么CMAKE_SOURCE_DIR和PROJECT_SOURCE_DIR表示的都是顶层目录,而PROJECT_BINARY_DIR就是${CMAKE_SOURCE_DIR}/build
参考如下示例:
./demo/
├── build
├── CMakeLists.txt
├── func
│ ├── CMakeLists.txt
│ ├── func.c
│ └── func.h
└── m.c
//顶层m.c
#include <stdio.h>
#include "func.h"
int main()
{
func();
return 0;
}
#顶层CMakeLists.txt
cmake_minimum_required(VERSION 3.15.0)
project(demo)
#输出信息
message(STATUS "in root")
message(STATUS "CMAKE_SOURCE_DIR is " ${CMAKE_SOURCE_DIR})
message(STATUS "PROJECT_SOURCE_DIR is " ${PROJECT_SOURCE_DIR})
message(STATUS "PROJECT_BINARY_DIR is " ${PROJECT_BINA