使用不正确数量的参数调用 Cmake add_executable [重复]

Posted

技术标签:

【中文标题】使用不正确数量的参数调用 Cmake add_executable [重复]【英文标题】:Cmake add_executable called with incorrect number of arguments [duplicate] 【发布时间】:2019-09-11 18:46:41 【问题描述】:

我正在尝试使用本教程在 Linux (openSuse) 上设置 c++ 开发环境https://youtu.be/LKLuvoY6U0I?t=154

当我尝试构建 CMake 项目时,我得到了 add_executable called with incorrect number of arguments

我的 CMakeLists.txt:

cmake_minimum_required (VERSION 3.5)

project (CppEnvTest)

set (CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -Wall -Werror -std=c++17")
set (source_dir "$PROJECT_SOURCE_DIR/src/")

file (GLOB source_files "$source_dir/*.cpp")

add_executable (CppEnvTest $source_files)

我的 build.sh:

#!/bin/sh

cmake -G "CodeLite - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug

我的终端输出:

/Dev/CppEnvTest/src> ./build.sh 
CMake Error at CMakeLists.txt:10 (add_executable):
  add_executable called with incorrect number of arguments


-- Configuring incomplete, errors occurred!

【问题讨论】:

【参考方案1】:

要扩展@arrowd 的正确答案,您有几个选项可以列出您的源文件。您的方法file(GLOB ...)当前 目录中查找与.cpp 匹配的源文件。如果您的项目结构使得您在$source_dir 中有嵌套目录,则需要recursive 选项:

file (GLOB_RECURSE source_files "$source_dir/*.cpp")

这将递归搜索该目录任何嵌套目录中的所有.cpp 文件。

您还可以使用set 执行蛮力方法,这是 CMake 的最佳选择,方法如下:

set(source_files 
    $source_dir/mySrcs1/Class1.cpp
    $source_dir/mySrcs1/Class2.cpp
    $source_dir/mySrcs1/Class3.cpp
    ...
    $source_dir/mySrcs42/testClass1.cpp
    $source_dir/mySrcs42/testClass2.cpp
    ...
)

【讨论】:

我使用了蛮力的方式,它成功了谢谢【参考方案2】:

您的 source_files 变量似乎为空。通过在CMakeLists.txt 中的某处添加message("source_files: $source_files") 来验证这一点。

【讨论】:

我已经完成并得到:/Dev/CppEnvTest/src> ./build.sh source_files: CMake Error at CMakeLists.txt:12 (add_executable): add_executable called with incorrect number of arguments -- Configuring incomplete, errors occurred!

以上是关于使用不正确数量的参数调用 Cmake add_executable [重复]的主要内容,如果未能解决你的问题,请参考以下文章

尽管函数调用的参数数量不正确,但 C 程序编译

检查正确数量的参数

CMake 设置 Application Icon

如何使用任意数量的参数调用Method.invoke?

从 MySQL 数据库中选择数据时,PROCEDURE 的参数数量不正确

来自 C# 的 PROCEDURE... 的参数数量不正确