Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用2个主src文件构造cmake项目_C++_Cmake - Fatal编程技术网

C++ 如何使用2个主src文件构造cmake项目

C++ 如何使用2个主src文件构造cmake项目,c++,cmake,C++,Cmake,我想了解如何正确构建我的cpp项目。我正在使用构建生成器CMAKE。我使用的构建系统是忍者。我在我的项目中有两个主要功能。每个main都应该编译成不同的可执行文件 何时以及为什么要使用多个cmake文件? 如何更好地组织我的项目 |-- CMakeLists.txt |-- README.md |-- env.csh |-- include | |-- Pen.h | |-- Cup.h | |-- Clip.h |

我想了解如何正确构建我的cpp项目。我正在使用构建生成器CMAKE。我使用的构建系统是忍者。我在我的项目中有两个主要功能。每个main都应该编译成不同的可执行文件

何时以及为什么要使用多个cmake文件?
如何更好地组织我的项目

    |-- CMakeLists.txt
    |-- README.md
    |-- env.csh
    |-- include
    |   |-- Pen.h
    |   |-- Cup.h
    |   |-- Clip.h
    |   |-- Fun.h
    |   |-- Ins.h
    |   |-- Ne.h
    |   `-- Pa.h
    |-- libs
    |-- src
    |   |-- Pen.cpp
    |   |-- Cup.cpp
    |   |-- Clip.cpp
    |   |-- Fun.cpp
    |   |-- Ins.cpp
    |   |-- Ne.cpp
    |   |-- Pa.cpp
    |   |-- main0.cpp
    |   `-- main1.cpp
    `-- tests
        `-- test.cpp

您需要为项目中的每个可执行文件添加一行
add_executable()
。尝试此
CMakeLists.txt
文件(主要从内存写入):


您是否有要编写的CMake文件?你的问题基本上是开放式的,因为没有正确的方法来组织项目。这取决于您的工程判断,通常取决于文件结构的复杂性和第三方库的依赖性。您的示例非常简单,因此一个CMake文件就足够了……如果main0和main1共享相同的lib文件,那么一般的CMake结构会是什么?正如我所说,对于您提供的示例,似乎不需要创建多个CMake文件。但是,这也是我的观点,并且仅基于您提供的细节。这个问题更适合你。谢谢你的编辑,@squareskittles!正如我所说,这是由记忆造成的,我预计会有打字错误:-)
cmake_minimum_required(VERSION 2.8)
project(myproject LANGUAGES CXX)
enable_testing()
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
set(SOURCES 
    src/Pen.cpp 
    src/Cup.cpp  
    src/Clip.cpp  
    src/Fun.cpp  
    src/Ins.cpp  
    src/Ne.cpp  
    src/Pa.cpp
)
add_executable(main0 src/main0.cpp ${SOURCES})
add_executable(main1 src/main1.cpp ${SOURCES})
add_executable(unittests tests/test.cpp ${SOURCES})
add_test(tests unittests)