C++ 获取CMake中当前宏文件的文件
我正在编写一个.cmake文件,该文件处理大量内容,并且需要访问位于.cmake文件固定相对路径中的可执行文件。在本例中,组织结构如下所示:C++ 获取CMake中当前宏文件的文件,c++,cmake,path,include,C++,Cmake,Path,Include,我正在编写一个.cmake文件,该文件处理大量内容,并且需要访问位于.cmake文件固定相对路径中的可执行文件。在本例中,组织结构如下所示: CMakeLists.txt - cmake - tools.cmake - bin - exectuable.exe 问题是tools.cmake是使用include包含的,因此,cmake\u CURRENT\u SOURCE\u DIR返回CMakeLists.txt的目录。我不想硬编码路
CMakeLists.txt
- cmake
- tools.cmake
- bin
- exectuable.exe
问题是tools.cmake
是使用include
包含的,因此,cmake\u CURRENT\u SOURCE\u DIR
返回CMakeLists.txt的目录。我不想硬编码路径的原因是我想把tools.cmake
和二进制文件放在一个单独的GIT存储库中,我不想强迫用户将其放在某个特定的文件夹中
我现在能想到的唯一解决方案是提供一个函数,用于设置和存储tools.cmake
的路径。这不太优雅。回答如下:
CMAKE\u JUCE\u TOOLS\u PATH
不会在TOOLS.CMAKE中的函数或宏中返回正确的路径,但会在任何函数之外返回正确的路径。所以我们可以
set(PATH_TO_TOOLS_CMAKE ${CMAKE_JUCE_TOOLS_PATH})
在变量中可以访问路径时存储路径,而在函数和宏中访问path\u to\u TOOLS\u CMAKE
则是CMAKE\u CURRENT\u LIST\u FILE
和CMAKE\u CURRENT\u LIST\u DIR
您要查找的变量,他们返回的不是tools.cmake
,而是CMakeLists.txt
,其中包含tools.cmake
。我可以让用户使用属性手动将变量存储到路径中,从而让它工作。但我真的想跳过这一步。真的,该死。但是是的,我会添加一个答案并标记为dup