在CMake中获取当前宏文件的文件

时间:2018-06-14 14:43:52

标签: c++ cmake path include

我正在编写一个处理大量内容的.cmake文件,需要访问.cmake文件的固定相对路径中的可执行文件。在这种情况下,组织化如下所示:

CMakeLists.txt 
   - cmake
       - tools.cmake 
       - bin
           - exectuable.exe

问题是使用tools.cmake包含include,因此,CMAKE_CURRENT_SOURCE_DIR会返回CMakeLists.txt的目录。我不想对路径进行硬编码的原因是我想将tools.cmake和二进制文件放在一个单独的GIT存储库中,我不想强​​迫用户将其置于某个特定的位置夹。

我现在唯一能提出的解决方案是提供一个设置和存储tools.cmake路径的功能。那不是很优雅。

1 个答案:

答案 0 :(得分:0)

在这里回答:https://stackoverflow.com/a/12854575/2532768

CMAKE_JUCE_TOOLS_PATH不会在tools.cmake中的函数或宏中返回正确的路径,但会导致任何函数外的正确路径。所以我们可以

set(PATH_TO_TOOLS_CMAKE ${CMAKE_JUCE_TOOLS_PATH})

存储路径,同时可以在变量中访问路径,而不是在函数和宏中访问PATH_TO_TOOLS_CMAKE