【发布时间】:2021-07-14 17:33:14
【问题描述】:
我在使用 cmake 生成器表达式 TARGET_NAME_IF_EXISTS 时遇到问题。有了这个CMakeLists.txt:
cmake_minimum_required(VERSION 3.13.0)
option(SLIB_BUILD_STATIC "" ON)
project(slib VERSION 1.0)
add_library(slibObjects OBJECT main.c)
add_library(slib SHARED $<TARGET_OBJECTS:slibObjects>)
if (SLIB_BUILD_STATIC) # Can this if() be replaced with a GenExp?
add_library(slibStatic STATIC $<TARGET_OBJECTS:slibObjects>)
endif()
set_target_properties(
slib
$<TARGET_NAME_IF_EXISTS:slibStatic> # This GenExp doesn't get reduced
PROPERTIES
VERSION ${SLIB_VERSION}
SOVERSION ${SLIB_VERSION_MAJOR}
)
我明白了
CMake Error at CMakeLists.txt:12 (set_target_properties):
set_target_properties Can not find target to add properties to:
$<TARGET_NAME_IF_EXISTS:slibStatic>
我预计 set_target_properties 会减少到其中之一,具体取决于是否设置了 SLIB_BUILD_STATIC:
set_target_properties( slib slibStatic PROPERTIES ...)
set_target_properties( slib PROPERTIES ...)
我做错了什么?
【问题讨论】:
标签: cmake cmake-language