CMake外部项目\添加并行构建问题

CMake外部项目\添加并行构建问题,cmake,build,shared-libraries,Cmake,Build,Shared Libraries,我在使用ExternalProject\u Add命令运行并行构建时遇到问题。 我有一个从internet下载的库,它是使用这个命令构建的。此库被下一个应构建的其他目标消耗。但是,我的使用者目标生成失败并出现错误,因为它找不到外部库。这是我的代码: 外部_library.cmake ... ExternalProject_(project_library DEPENDS ... BUILD_COMMAND ... INSTALL_COMMAND ... ) ... consumer.cma

我在使用
ExternalProject\u Add
命令运行并行构建时遇到问题。 我有一个从internet下载的库,它是使用这个命令构建的。此库被下一个应构建的其他目标消耗。但是,我的使用者目标生成失败并出现错误,因为它找不到外部库。这是我的代码:

外部_library.cmake

...

ExternalProject_(project_library 
DEPENDS ...
BUILD_COMMAND ...
INSTALL_COMMAND ...
)
...
consumer.cmake:

...

add_library(externalProjectLib SHARED IMPORTED GLOBAL)
add_dependencies(externalProjectLib project_library)
set_target_properties(externalProjectLib PROPERTIES
    IMPORTED_LOCATION path/to/externalProject.lib
)

add_executable(consumer ${SOURCES})
target_link_libraries(consumer externalProjectLib)

...
如果我不运行并行构建,或者有时它也在并行构建中运行,那么整个过程都是有效的。我知道,
ExternalProject\u Add
内部只使用
Add\u custom\u target
,所以基本上在配置阶段,甚至内部项目的配置也没有完成,它在构建期间完成。因此,系统不知道externalProject.lib的实际构建时间,因此在externallib的配置阶段,消费者的构建可能会立即继续

我的问题是,是否有一些解决方法,因为我必须使用并行构建和ExternalProject\u Add?我能想到的唯一解决办法是有一些虚拟目标,以某种方式导致构建等待,而这个目标将是消费者的依赖性。但我不喜欢这样