CMake 拒绝第二次 target_link_libraries 谈论 "keyword" 与 "plain"
CMake rejects a second target_link_libraries talking about "keyword" vs "plain"
我正在编译一个二进制文件,出于各种原因,我想在两个不同的 target_link_libraries()
命令中添加它的依赖库。
我的命令是这样的:
target_link_libraries(my_prog PRIVATE foo bar)
target_link_libraries(my_prog baz)
我收到错误:
The keyword signature for target_link_libraries has already been used with
the target "my_prog". All uses of target_link_libraries with a target
must be either all-keyword or all-plain.
The uses of the keyword signature are here:
* tests/CMakeLists.txt:10 (target_link_libraries)
这是什么意思?我该怎么办?
您对 target_link_libraries()
的使用确实有问题,因为它涉及此命令的两种不同“风格”,一种是传统的,一种是较新的。
在一次使用中,您指定的依赖是PRIVATE
;另一方面,您不指定任何内容。这是不可接受的:要么为 all 元素指定 PUBLIC
/PRIVATE
/INTERFACE
,要么为 none.
因此,您可以将 CMakeLists.txt
修改为:
target_link_libraries(my_prog foo bar)
target_link_libraries(my_prog baz)
或
target_link_libraries(my_prog PRIVATE foo bar)
target_link_libraries(my_prog PRIVATE baz)
我正在编译一个二进制文件,出于各种原因,我想在两个不同的 target_link_libraries()
命令中添加它的依赖库。
我的命令是这样的:
target_link_libraries(my_prog PRIVATE foo bar)
target_link_libraries(my_prog baz)
我收到错误:
The keyword signature for target_link_libraries has already been used with
the target "my_prog". All uses of target_link_libraries with a target
must be either all-keyword or all-plain.
The uses of the keyword signature are here:
* tests/CMakeLists.txt:10 (target_link_libraries)
这是什么意思?我该怎么办?
您对 target_link_libraries()
的使用确实有问题,因为它涉及此命令的两种不同“风格”,一种是传统的,一种是较新的。
在一次使用中,您指定的依赖是PRIVATE
;另一方面,您不指定任何内容。这是不可接受的:要么为 all 元素指定 PUBLIC
/PRIVATE
/INTERFACE
,要么为 none.
因此,您可以将 CMakeLists.txt
修改为:
target_link_libraries(my_prog foo bar)
target_link_libraries(my_prog baz)
或
target_link_libraries(my_prog PRIVATE foo bar)
target_link_libraries(my_prog PRIVATE baz)