我有一个不同风格的库libsoci-3.2.2_core_s.a
libsoci-3.2.2_core_sd.a
等。一个是静态调试版本或静态版本以及其他一些版本(unicode,DLL等)。< / p>
现在当我使用这个cmake语句时,它会找到第一个库而不是正确的库。
set(CMAKE_PREFIX_PATH ${SOCI_LIBRARY_PATH})
find_library(SOCI_LIBRARY
NAMES "soci-3.2.2_core_${UNICODE_FLAG}s${BUILD_TYPE_FLAG}"
HINTS "${SOCI_LIBRARY_PATH}"
)
message("SOCI_SEARCHNAME: soci-3.2.2_core_s${BUILD_TYPE_FLAG}")
message("SOCI_FOUND: ${SOCI_LIBRARY} soci-3.2.2_core_s${BUILD_TYPE_FLAG}")
目前我只有这个lib的静态版本,所以我把这个&#39; s&#39;硬编码。 BUILD_TYPE_FLAG
是&#39; d&#39;对于调试或空的,在这种情况下它肯定是&#39; d&#39;但是cmake总是返回
d:\src\c\github\build\Datinator>make
SOCI_SEARCHNAME: soci-3.2.2_core_sd
SOCI_FOUND: d:/opt/soci/lib/libsoci-3.2.2_core_s.a soci-3.2.2_core_sd
-- Configuring done
-- Generating done
所以我需要做什么,cmake找到正确的库版本,除了将它放在单独的目录中(我不喜欢)。
此外,cmake是否有某种方法可以找到版本号3.2.2
本身,还是我必须对其进行硬编码?