Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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
可以用介子构建一个简单的项目,但不能用CMake 我想从我的C++源代码(测试和发布)中获得两个可执行文件。我在两个独立的C++文件中有两个主函数(< /P>)。_C++_Cmake_Executable_Meson Build - Fatal编程技术网

可以用介子构建一个简单的项目,但不能用CMake 我想从我的C++源代码(测试和发布)中获得两个可执行文件。我在两个独立的C++文件中有两个主函数(< /P>)。

可以用介子构建一个简单的项目,但不能用CMake 我想从我的C++源代码(测试和发布)中获得两个可执行文件。我在两个独立的C++文件中有两个主函数(< /P>)。,c++,cmake,executable,meson-build,C++,Cmake,Executable,Meson Build,使用构建系统,很容易: project('PrjName', 'cpp') mainSrc = ['header1.hpp', 'source1.cpp', 'source2.cpp'] testSrc = ['header2.hpp', 'source2.cpp', 'test.cpp'] mainExe = executable('prjName', mainSrc) testExe = executable('prjNameTest', testSrc) 我无法得到同样的结果: 我得

使用构建系统,很容易:

project('PrjName', 'cpp')

mainSrc = ['header1.hpp', 'source1.cpp', 'source2.cpp']
testSrc = ['header2.hpp', 'source2.cpp', 'test.cpp']

mainExe = executable('prjName', mainSrc)
testExe = executable('prjNameTest', testSrc)
我无法得到同样的结果:

我得到第一个可执行文件(prjName),但不是第二个,错误如下:

“主要”的多重定义

但是,main()函数是在“source1.cpp”和“test.cpp”中定义的,因此应该没有冲突


考虑到从介子构建来看,代码应该很好,我如何解决这个问题?

在不同的PC上构建相同的代码,我没有这样的问题


我将关闭/删除此问题。

以的形式在
source1.cpp
source2.cpp
header1.hpp
中显示代码<代码>我得到第一个可执行文件(prjName),但不是第二个,错误为:-通常,在第一个可执行文件完全构建之前,第二个可执行文件不会开始编译。如果问题不取决于第二个可执行文件,请将其从
CMakeLists.txt
中删除,然后重试。将真实脚本放在此处。很明显,介子项目中的文件与CMake项目不同。例如,TEST_SOURCES有“source2.cpp”,其中只有介子的“source1.cpp”system@Nibor:我修正了打字错误。谢谢,你想从我们这里得到什么?您的
CMakeLists.txt
脚本是正确的。(假设您要将源目录(靠近
CMakeLists.txt
)中的“source2.cpp”和“test.cpp”编译到第二个可执行文件中。这可能是源文件本身的问题,但您不会显示它们。
cmake_minimum_required(VERSION 3.10)
project("PrjName")

set(SOURCES
    "header1.hpp"
    "source1.cpp"
    "source2.cpp"
)

set(TEST_SOURCES
    "header2.hpp"
    "source2.cpp"
    "test.cpp"
)

add_executable("prjName" ${SOURCES})
add_executable("prjNameTest" ${TEST_SOURCES})