如何获取cmake工具链文件中的项目根目录,这可能吗
How to get project root directory inside cmake toolchain file, is it possible?
我正在进行跨平台构建,并尝试使用cmake。因此,我创建了my-toolchain-file.cmake,其中包含自定义c++链接器命令。链接我的裸机员工可以这样做:
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>"
)
在自定义的链接器命令中,我必须获得清单文件的路径,该文件相对于项目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++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 欧拉项目#8答案是大以获得有效答案
- 从链接列表c++中删除一个项目
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 既然存在危险,为什么项目要使用-I include开关
- cmake在我的项目中所需的所有静态库都不成功
- QT通过C++添加映射QML项目
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在linux上调试巨大的C++项目
- 在其他文件中创建类时在 c++ 项目中不起作用
- 使外部项目可用于find_package CMake
- CMake:Android Studio 原生活动项目无法在项目根目录之外找到第三方库
- 如何获取cmake工具链文件中的项目根目录,这可能吗
- 如何从 qmake 中的包含路径中删除项目的根目录
- 项目根目录中的生成文件 "no Input Files"
- 设置项目根目录