使用不正确数量的参数调用 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章