CMAKE-添加库don';每小时最后一轮都不工作

CMAKE-添加库don';每小时最后一轮都不工作,cmake,logic,Cmake,Logic,我有一个CMakelist.txt: cmake_minimum_required(VERSION 3.12) project(test) set(TEST_HOME ${CMAKE_CURRENT_SOURCE_DIR}) message("test SDK home directory: " ${TEST_HOME}) set(a true) list(APPEND plugins a) set(b true) list(APPEND plugins b) set(c true) li

我有一个CMakelist.txt

cmake_minimum_required(VERSION 3.12)
project(test)

set(TEST_HOME ${CMAKE_CURRENT_SOURCE_DIR})

message("test SDK home directory: " ${TEST_HOME})

set(a true)
list(APPEND plugins a)
set(b true)
list(APPEND plugins b)
set(c true)
list(APPEND plugins c)
add_executable(test main.c)

foreach(plugin IN LISTS plugins)
  if(${${plugin}})
    file(GLOB ${plugin}-SRC "${TEST_HOME}/plugins/${plugin}/src/*.c")
    message(${${plugin}-SRC})
    add_library(slt_${plugin} SHARED ${${plugin}-SRC})
    message(${plugin})
    target_link_libraries(test slt_${plugin}.so)
  endif()
endforeach()
TLDR:我转向创建库并将它们链接到我的可执行文件

但是我的上一个库没有创建,由这个CMakelist.txt生成的Makefile的输出是:

Scanning dependencies of target slt_c
[ 12%] Building C object CMakeFiles/slt_c.dir/plugins/c/src/c.c.o
[ 25%] Linking C shared library libslt_c.so
[ 25%] Built target slt_c
Scanning dependencies of target slt_b
[ 37%] Building C object CMakeFiles/slt_b.dir/plugins/b/src/b.c.o
[ 50%] Linking C shared library libslt_b.so
[ 50%] Built target slt_b
[ 62%] Linking C executable minko
/usr/bin/x86_64-linux-gnu-ld: cannot find -lslt_a
/usr/bin/x86_64-linux-gnu-ld: cannot find -lslt_b
/usr/bin/x86_64-linux-gnu-ld: cannot find -lslt_c
当我把a变成false时。这是谁不建造。
我真的不知道这是什么原因,我只是开始做一些测试。谢谢。

你会有这么多的插件以至于循环很重要吗?手动指定这些共享库时,说明也可能更易于阅读。如果在项目中创建库,请使用目标的名称链接该库:
target\u link\u libraries(test slt\u${plugin})
,而不是库文件名。使用目标名称时,CMake不仅会自动调整链接器标志,还会创建依赖项,因此只有在构建库之后才会执行链接。