CMake的文件在哪里(GLOB`相对于?

时间:2017-01-17 16:49:15

标签: cmake

如果我FILE (GLOB "*.cpp")它在哪里?搜索的工作目录是什么?它是当前的源目录吗?这似乎没有在任何地方记录(尽管它是FILE (COPY)。

3 个答案:

答案 0 :(得分:2)

FILE(GLOB globbing expression)接受globbing表达式中的路径。因此,您可以在表达式中包含任何路径。以下示例在子文件夹testdata中查找扩展名为dat的所有文件:

file(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/testdata/*.dat")

注意:使用预定义的路径变量(如CMAKE_CURRENT_SOURCE_DIR)可以避免考虑相对路径,并使CMakeLists.txt更具可重用性和平台无关性。

为: file(GLOB generatedSources "../build-arm/autocode/*.c")

○: file(GLOB generatedSources "${PROJECT_BINARY_DIR}/autocode/*.c")

答案 1 :(得分:0)

搜索发生在当前源目录中,即.getInputStream()的目录。

作为关于你想要实现的目标的一个侧面评论,我要强调following

  

注意:我们不建议使用GLOB来收集源文件列表   来自您的源代码树。如果源没有CMakeLists.txt文件更改   添加或删除,然后生成的构建系统无法知道何时   要求CMake重新生成。

答案 2 :(得分:0)

您还可以指定相对路径。我不确定何时添加RELATIVE选项,但是至少从3.0.2版开始可以使用该选项。 here