【发布时间】:2021-04-02 12:02:39
【问题描述】:
我正在使用 python 的 cmake-converter 从 .sln 项目生成 cmake 文件。
在 Visual Studio 中,我正在尝试为 WSL-GCC-Debug 配置生成 cmake 文件。
当 Visual Studio 启动 CMake 生成时,我收到此错误
[CMake] /CMakeLists.txt:220 (add_library) 处的 CMake 错误:
[CMake] Target '
' OUTPUT_NAME 依赖于自身。
CMakeLists.txt 看起来像这样:
1 set(PROJECT_NAME Example)
2 set(no_group_source_files
...
100 Example.h
...
180 )
181 source_group("" FILES ${no_group_source_files})
182 set(ALL_FILES
183 ${no_group_source_files}
184 )
...
220 add_library(${PROJECT_NAME} SHARED ${ALL_FILES})
关于这个 here 有一个未解决的问题,但我没有看到对我的案子有帮助的答案
我是 cmake 的新手,正在尝试调试它。有谁知道为什么会发生这种情况以及我该如何解决?
【问题讨论】:
-
看起来像是在您为库目标设置
OUTPUT_NAME属性作为生成器表达式的代码中的某处。这个生成器表达式依赖于那个属性。参见例如CMake 测试中的一个文件会导致类似的错误消息:gitlab.kitware.com/cmake/cmake/-/blob/…. -
你好@Tsyvarev,也许错误是由这段代码生成的
$<TARGET_GENEX_EVAL:Example,$<TARGET_PROPERTY:Example,TARGET_NAME_$<UPPER_CASE:$<CONFIG>>>>如果问题的原因是生成表达式依赖于OUTPUT_NAME属性,有没有办法解决它? -
不,这个生成器表达式不太可能导致您得到的错误。请注意,生成器表达式本身不会导致错误:此生成器表达式应分配给目标的 属性。
标签: c++ visual-studio cmake