如何解决
-
CMake Error at demo01/CMakeLists.txt:27 (add_dependencies):
Cannot add target-level dependencies to non-existent target "demo01".The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands. -
这个错误信息表明你在
CMakeLists.txt
文件的第 27 行使用了add_dependencies
命令,但是尝试为其添加依赖的目标 "demo01" 并不存在。add_dependencies
命令用于在目标之间设置依赖关系,这些目标必须是通过add_executable
、add_library
或add_custom_target
创建的。要解决这个问题,你可以按照以下步骤进行:
-
检查目标是否存在:
确认在你的CMakeLists.txt
文件中是否已经使用add_executable
、add_library
或add_custom_target
创建了一个名为 "demo01" 的目标。如果没有,你需要创建它,或者更改add_dependencies
中的目标名称为一个已存在的目标。 -
创建目标:
如果你需要创建一个名为 "demo01" 的可执行文件或库,可以使用以下命令之一:- 创建可执行文件:
add_executable(demo01 source_file1.cpp source_file2.cpp)
- 创建库:
或者add_library(demo01 SHARED source_file1.cpp source_file2.cpp)
add_library(demo01 STATIC source_file1.cpp source_file2.cpp)
- 创建可执行文件:
-
调整依赖关系:
如果你确实有一个不同的目标,并且想要设置依赖关系,确保在add_dependencies
中使用正确的目标名称。 -
使用
add_custom_target
:
如果你想要设置一个不直接对应于可执行文件或库的目标(例如,一个仅用于执行某些命令的目标),你可以使用add_custom_target
。例如:add_custom_target(my_custom_target COMMAND some_command) add_dependencies(another_target my_custom_target)
-
检查顺序:
确保add_executable
、add_library
或add_custom_target
调用在add_dependencies
调用之前。CMake 是按照顺序解析命令的,如果目标在依赖关系声明之后才被创建,CMake 将无法识别它。 -
重新运行 CMake:
修改完CMakeLists.txt
后,确保重新运行 CMake 来更新构建系统。
通过以上步骤,你应该能够解决这个错误。如果问题仍然存在,仔细检查
CMakeLists.txt
文件中的命令和顺序是否正确。
以上为生成回答,仅供参考~
-