大多数人从一些其他具有构建单个文件选项的IDE切换到CLion有点混淆,但没有选择。
那么如何避免将每个源文件的每个名称添加到CMake中?
答案 0 :(得分:3)
您正在寻找的是file(GLOB_RECURSE *.cpp)
。如果需要,您可以自定义此命令以过滤掉目录。
答案 1 :(得分:1)
我使用 CLION 在c ++和CMake上遇到了同样的问题。这就是我设法解决它的方法:
这是我的项目结构:
├── CMakeLists.txt
├── README.md
└── src
└── ch01
├── ex01
│ └── main.cpp
└── ex02
└── main.cpp
以下是CMakeLists.txt
的内容:
cmake_minimum_required(VERSION 3.5)
project(CPPTutorial)
set(CMAKE_CXX_STANDARD 14)
set(sourceDir "${PROJECT_SOURCE_DIR}/src")
file(GLOB_RECURSE sourceFiles "${sourceDir}/*.cpp")
FOREACH (sourceFile ${sourceFiles})
MESSAGE(STATUS "Process file: ${sourceFile}")
get_filename_component(dir1 ${sourceFile} PATH)
get_filename_component(dir1 ${dir1} NAME)
get_filename_component(dir2 "${sourceFile}/../../" ABSOLUTE)
get_filename_component(dir2 ${dir2} NAME)
MESSAGE(STATUS "New target: ${dir2}_${dir1}")
add_executable("${dir2}_${dir1}" ${sourceFile})
endforeach (sourceFile)
它为目录中的每个来源创建了一个新目标..实际上它需要更多工作,但它为我完成了工作。
AAA/BBB
相同,其中AAA
是父目录,BBB
是它的子目录。AAA
,也可以添加更多BBB
希望有所帮助
答案 2 :(得分:1)
简而言之,您的 CMakeLists.txt 中需要如下一行:
file(GLOB_RECURSE SOURCES *.cc *.cpp)
这是我的 CMakeLists.txt 文件,用于查看和编辑 Chromium c++ 项目。
cmake_minimum_required(VERSION 3.17)
project(chromium)
set(CMAKE_CXX_STANDARD 11)
file(GLOB_RECURSE SOURCES *.cc)
include_directories(./)
add_executable(chromium ${SOURCES})
您可以使用 file(GLOB_RECURSE SOURCES *.cc) 来包含所有级别目录中匹配某些模式的所有文件。
附:
答案 3 :(得分:0)
这是一个完整的例子。
" "
答案 4 :(得分:-1)
我写了一个模板cmake文件,我用它可以为你做这个。它会自动将源文件作为单独的可执行文件。
可以在此处找到Cmake模板:template file
您只需将其粘贴到CMakeLists.txt并刷新cmake即可。然后,您可以从下拉菜单中选择要运行的文件。
提示:为clion设置中的Cmake刷新添加键盘快捷键