CMAKE_CURRENT_SOURCE_DIR 和 CMAKE_SOURCE_DIR 的区别

CMAKE_CURRENT_SOURCE_DIR CMAKE_SOURCE_DIR 是两个不同的 CMake 内置变量,它们的含义如下:

CMAKE_CURRENT_SOURCE_DIR

表示当前正在处理的 CMakeLists.txt 所在的源代码目录路径。 这个变量的值会随着 CMake 在不同目录下处理 CMakeLists.txt 文件而变化。

CMAKE_SOURCE_DIR

表示顶层 CMakeLists.txt 所在的源代码根目录路径,即整个项目的源代码根目录。 这个变量在整个构建过程中保持不变。简单来说,CMAKE_CURRENT_SOURCE_DIR 是相对的,指向当前正在处理的源码目录,而 CMAKE_SOURCE_DIR 是绝对的,指向整个项目的源码根目录。

在处理多级目录结构的项目时,正确使用这两个变量是很重要的。通常情况下,如果需要引用同级或子级目录下的文件,应该使用 CMAKE_CURRENT_SOURCE_DIR。如果需要引用项目根目录下的文件,则应使用 CMAKE_SOURCE_DIR。

cmake_minimum_required(VERSION 3.14) project(FFTW_GSL_SO LANGUAGES CXX C) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD 99) set(CMAKE_SYSTEM_NAME Android) set(CMAKE_SYSTEM_VERSION 31) # 或者您需要的 Android API 级别 set(CMAKE_ANDROID_ARCH_ABI arm64-v8a) # 设置为 arm64-v8a find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/FFTW2/HeadFile/fftw) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/block) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/gsl) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/interpolation) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/linalg) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/view) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/) file(GLOB FFTW2_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/FFTW2/SourceFile/fftw/*.c ) file(GLOB GSL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/GSL/SourceFile/interpolation/*.c ${CMAKE_CURRENT_SOURCE_DIR}/GSL/SourceFile/linalg/*.c ${CMAKE_CURRENT_SOURCE_DIR}/GSL/SourceFile/view/*.c ) add_library(FFTW_GSL_SO SHARED fftw_gsl_so.cpp fftw_gsl_so.h ${FFTW2_SOURCES} ${GSL_SOURCES} ) target_include_directories(FFTW_GSL_SO PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/FFTW2/HeadFile/fftw ${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/block ${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/gsl ${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/interpolation ${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/linalg ${CMAKE_CURRENT_SOURCE_DIR}/GSL/HeadFile/view ${CMAKE_CURRENT_SOURCE_DIR}/ # ${CMAKE_CURRENT_SOURCE_DIR}/GSL/SourceFile/interpolation # ${CMAKE_CURRENT_SOURCE_DIR}/GSL/SourceFile/linalg # ${CMAKE_CURRENT_SOURCE_DIR}/GSL/SourceFile/view ) target_link_libraries(FFTW_GSL_SO PRIVATE Qt${QT_VERSION_MAJOR}::Core) target_compile_definitions(FFTW_GSL_SO PRIVATE FFTW_GSL_SO_LIBRARY) 可以做我的代码上直接修正吗
04-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值