CMake GLOB 不返回任何源文件?
Posted
技术标签:
【中文标题】CMake GLOB 不返回任何源文件?【英文标题】:CMake GLOB not returning any source files? 【发布时间】:2020-03-16 20:08:33 【问题描述】:我正在尝试使用带有GLOB
的 CMake 自动为我的 C++ 项目编写 Makefile。然而,代码和标头位于两个单独的文件夹中。
/Users/username/Coding/Major Projects/ProjectName/Backend
和
/Users/username/Coding/Major Projects/ProjectName/Terminal
后端有独立于平台的代码。只是一堆 c 和 c++ 源文件。 Terminal 文件夹中有一些代码使用 Backend 中指定的对象对它们运行一些测试。这些位于不同文件夹中的原因是后端代码是多平台的。所以一个 Xcode 项目导入它等等。终端文件夹有测试代码,因为这是唯一一个试图将它编译成 linux 二进制文件的文件夹。
任何人,我有以下 CMakeList.txt 文件,我正在尝试构建该文件以生成 Makefile。
cmake_minimum_required(VERSION 2.8.9)
project(terminalTest)
set(MainSource "/Users/username/Coding/Major Projects/ProjectName/Backend")
set(TerminalSource "/Users/username/Coding/Major Projects/ProjectName/Terminal")
#Bring the headers, such as Student.h into the project
include_directories($MainSource $TerminalSource)
#Can manually add the sources using the set command as follows:
#set(SOURCES src/mainapp.cpp src/Student.cpp)
#However, the file(GLOB...) allows for wildcard additions:
file(GLOB SOURCES "./$MainSource,$TerminalSource/*.cpp")
add_executable(terminalTest $SOURCES)
当我从 CMake GUI 运行它时,结果是配置成功,但错误 No SOURCES given to target: terminalTest
意味着我的 file()
命令无法正常工作。
我认为这可能与我的路径中有空格的事实有关,但似乎也没有。顺便说一句,我将此文件放在终端文件夹中并尝试从终端/构建构建。
有什么方法可以调试并查看GLOB
命令引入的源?我真的可以像这样做一个多目录GLOB
吗?
【问题讨论】:
【参考方案1】:您的 file(GLOB ...)
路径格式不正确。您可以在此命令中分别列出源代码的路径,以获取 both 目录中的所有源文件。
file(GLOB SOURCES
$MainSource/*.cpp
$TerminalSource/*.cpp
)
【讨论】:
以上是关于CMake GLOB 不返回任何源文件?的主要内容,如果未能解决你的问题,请参考以下文章
C++学习(四九二)cmake file的GLOB和GLOB_RECURSE