gpt4 book ai didi

c++ - CMake - 使用不正确数量的参数调用 add_executable

转载 作者:太空狗 更新时间:2023-10-29 20:34:11 26 4
gpt4 key购买 nike

我正在尝试组织一个开始有很多文件的 C++ 项目。我想创建两个使用 Cmake 共享一些源文件的可执行文件。我在这里发现了一个有趣的过程:

How to add source files in another folder

下面是我的版本

file(GLOB Common_sources RELATIVE "Common" "*cpp")
file(GLOB Mps_sources RELATIVE "Mps" "*.cpp")
file(GLOB Mss_sources RELATIVE "Mss" "*.cpp")

add_executable(test_mss ${Common_sources} ${Mss_sources})
add_executable(test_mps ${Common_sources} ${Mps_sources})

但是 CMake 提示

CMake Error at src/CMakeLists.txt:44 (add_executable):
add_executable called with incorrect number of arguments

CMake Error at src/CMakeLists.txt:45 (add_executable):
add_executable called with incorrect number of arguments

上面说看CMakeOutput.log,但是文件实在是太长了,找不到有用的信息。

我查看了 CMake 文档,它似乎可以将第二个来源作为附加参数。 https://cmake.org/cmake/help/v3.0/command/add_executable.html

我想找到这个错误的来源。我觉得我在这里遗漏了一些明显的东西。

最佳答案

您收到的错误是因为传递给 add_executable 的源列表实际上是空的。

Common/ 子目录中收集资源的正确方法是:

file(GLOB Common_sources "Common/*.cpp")

在命令中 file(GLOB) RELATIVE 选项未指定搜索目录。相反,它只是告诉 CMake 生成相对路径而不是绝对路径:

If RELATIVE flag is specified, the results will be returned as relative paths to the given path.

假设

file(GLOB Common_sources "Common/*.cpp")
# gets: /<path-to-source>/Common/my_source.cpp

然后(还要注意 RELATIVE 选项中的绝对路径)

file(GLOB Common_sources RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/Common" "Common/*.cpp")
# gets: my_source.cpp

和(当文件不在RELATIVE 目录下时)

file(GLOB Common_sources RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/Mps" "Common/*.cpp")
# gets: ../Common/my_source.cpp

关于c++ - CMake - 使用不正确数量的参数调用 add_executable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50300939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com