我想开始一个cmake项目,并且我有很多文件。结构如下。
types.h
包含在functions.h
和dag.h
functions.h
包含在basic.cpp, br.cpp, IR.cpp
和UIR.cpp
functions.h
和dag.h
包含在dag.cpp, dag-cmp.cpp, dag-cover.cpp, dag-make.cpp
和dag-sum.cpp
很显然,我在同一目录中还有一个main.cpp
,其中包括types.h, dag.h
和functions.h
哪个是CMakeLists.txt和cmake项目的最佳解决方案?
答案 0 :(得分:0)
cmake_minimum_required(VERSION 3.12)
project(myproject)
set(CMAKE_CXX_STANDARD 14)
add_executable(myproject all.cpp all.h)
这可能是一种可能的格式。输入以空格分隔的.cpp和.h 文件。如果cpp / .h文件包含空格,则将其写入两倍 引号。
您可以根据自己的需要编辑C ++ Standard。
答案 1 :(得分:0)
我不认为,有最好的解决方案,但是我更喜欢以下内容:
cmake_minimum_required(VERSION 3.12)
project(myproject)
set(SOURCE_FILES
basic.cpp
br.cpp
IR.cpp
UIR.cpp
dag.cpp
dag-cmp.cpp
dag-cover.cpp
dag-make.cpp
dag-sum.cpp
main.cpp
)
set(HEADER_FILES
types.h
functions.h
dag.h
)
add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES})
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_14)
${PROJECT_NAME}
可以轻松更改项目名称,因为您只需更改一次即可。target_compile_features
代替set(CMAKE_CXX_STANDARD 14)
答案 2 :(得分:-1)
请考虑所有文件都位于src /文件夹中。 CMake可以自动列出它们:
file(GLOB_RECURSE source_files src/*)
add_executable(exec ${source_files})
第一行将在src文件夹(及其子文件夹)中查找所有文件,并将列表存储在source_files var中。 第二行将从source_files var加载文件并将其添加到可执行文件“ exec”