欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 区分PROJECT_SOURCE_DIR, CMAKE_SOURCE_DIR,CMAKE_CURRENT_SOURCE_DIR

区分PROJECT_SOURCE_DIR, CMAKE_SOURCE_DIR,CMAKE_CURRENT_SOURCE_DIR

2025/4/27 6:06:33 来源:https://blog.csdn.net/liji_digital/article/details/147539204  浏览:    关键词:区分PROJECT_SOURCE_DIR, CMAKE_SOURCE_DIR,CMAKE_CURRENT_SOURCE_DIR

目录

示例工程

PROJECT_SOURCE_DIR的行为

CMAKE_SOURCE_DIR的行为

CMAKE_CURRENT_SOURCE_DIR


示例工程

根目录

        |-----CMakeLists.txt

        |-----sub1

                |--------CMakeLists.txt

        |-----sub2

                |--------CMakeLists.txt

根目录下的CMakeList.txt:

project(main)message("main CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
message("main CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message("main PROJECT_SOURCE_DIR = ${PROJECT_SOURCE_DIR}")add_subdirectory(sub1)
add_subdirectory(sub2)

sub1目录下的CMakeLists.txt

project(sub1)message("sub1 CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
message("sub1 CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message("sub1 PROJECT_SOURCE_DIR = ${PROJECT_SOURCE_DIR}")

sub2目录下的CMakeLists.txt

message("sub2 CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
message("sub2 CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message("sub2 PROJECT_SOURCE_DIR = ${PROJECT_SOURCE_DIR}")

 sub1与sub2的CMakeLists的区别仅仅在于开头有没有使用project命令

PROJECT_SOURCE_DIR的行为

在根目录下运行cmake .

PROJECT_SOURCE_DIR的取值受两个因素影响:1所在目录 ,2所在的CMakeLists.txt有没有调用project命令

从打印结果可以看出来:

1 根目录下的CMakeLists.txt的PROJECT_SOURCE_DIR等于根目录路径;

2 如果不在根目录下,而是在子目录下,则:

2.1 如果子目录的CMakeLists.txt使用了project命令,则PROJECT_SOURCE_DIR等于当前子目录路径;

2.2 如果子目录的CMakeLists.txt没有使用project命令,则PROJECT_SOURCE_DIR等于上一层CMakeLists.txt的PROJECT_SOURCE_DIR

CMAKE_SOURCE_DIR的行为

不论CMakeLists在根目录还是子目录,也不论CMakeLists.txt里面有没有调用project函数,CMAKE_SOURCE_DIR都等于根目录路径

CMAKE_CURRENT_SOURCE_DIR

不论CMakeLists在根目录还是子目录,也不论CMakeLists.txt里面有没有调用project函数,CMAKE_CURRENT_SOURCE_DIR都等于当前目录路径

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词