c++ - 如何在 cmake 工具链文件中获取项目根目录,这可能吗?

标签 c++ cmake

我正在做跨平台构建,并尝试使用 cmake。所以我创建了 my-toolchain-file.cmake,在其中自定义 c++ 链接器命令。可以像这样链接我的 baremetal 员工:

set(CMAKE_CXX_LINK_EXECUTABLE
      "<CMAKE_CXX_COMPILER> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES> ${SDK_ROOT}/Libraries/${BUILD_TARGET}/${BUILD_TYPE}/memory.a -o <TARGET_BASE>"
      "if not exist <TARGET_BASE> ( mkdir <TARGET_BASE> )"
      "${SDK_ROOT}/Tools/CommandLineTools/Make/MakeBin.exe <TARGET_BASE> <TARGET_BASE>/main"
      "${SDK_ROOT}/Tools/CommandLineTools/Make/MakeManifest.exe --desc ${APP_DESC} --meta ${APP_META} -o <TARGET_BASE>/main.m"
      "copy ${SDK_ROOT_WIN}\\Libraries\\${BUILD_TARGET}\\${BUILD_TYPE}\\syslib.so <TARGET_BASE>\\rtld >NUL"
      "copy ${SDK_ROOT_WIN}\\Libraries\\${BUILD_TARGET}\\${BUILD_TYPE}\\Sdk.so <TARGET_BASE>\\sdk >NUL"
      "${SDK_ROOT}/Tools/SomeTool.exe createimage -o <TARGET_BASE> --desc ${APP_DESC} --meta ${APP_META} --type Exe --program <TARGET_BASE>bin"
      "rmdir /S /Q <TARGET_BASE>"
      "del /Q <TARGET_BASE>"
    )

在自定义链接器命令中,我必须获取 list 文件的路径,该文件相对于项目 CMakeLists.txt 而不是工具链文件。如何在工具链文件中设置我的 APP_META 变量?我尝试:

set(APP_META "${CMAKE_CURRENT_LIST_DIR}/Application.manifest")

它不工作(工具链文件和 CMakeLists.txt 在不同的地方)。如何获取cmake工具链文件中的根目录路径?提前致谢!

最佳答案

看起来 CMAKE_CURRENT_SOURCE_DIR 适合我。

set(APP_META "${CMAKE_CURRENT_SOURCE_DIR}/Application.manifest")

关于c++ - 如何在 cmake 工具链文件中获取项目根目录,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57289395/

相关文章:

c++ - 加快图像中的自相似性

c++ - 如何有效地使用预编译头文件(使用/Yc 和 Yu 选项)?

opengl - cmake 不使用 QtOpenGL 链接 libGLU

c++ - 我的项目找不到一个库头,但找不到另一个

安卓 ndk(cmake) : 'undefined reference to ` __android_log_write' when using log api in the second jni library

c - CMake 中的 LibSodium 依赖项无法在 Docker 容器中解析

c++ - 为 STL 排序算法定义 < - 运算符重载、仿函数或独立函数?

C++ 编写内联函数作为参数传递

c++ - 继承的纯虚函数

c++ - 开罗图书馆和 Cmake