似乎cmake无法确定哪些库可以与当前编译器一起使用,或者我希望cmake只使用已使用相同编译器编译的库。
我正在使用find_library来查找所需的库,但似乎无法确定该库是否实际可用。它设法按名称查找库,但在我为MinGW进行配置时使用了“.lib”扩展名。我是否必须为我编译库的每个编译器创建文件夹,并在我的脚本中为每个编译器添加if语句?这似乎与我认为find_library能够做到的事情相反。也许我在滥用它?谁有更好的想法?
答案 0 :(得分:2)
看起来你有点困惑:当你建议在Windows上为MinGW和Visual Studio提供不同的库时,你是对的。但是当你说MinGW不能使用.lib
文件时你错了。 Visual Studio和MinGW都使用.lib
文件链接到Windows上的库。
find_library
命令只用于查找库。没有更多,所以它在这里发挥作用。
如果要确保编译器可以使用找到的库,则必须检查编译器是否可以使用try_compile
来使用这些库:
find_library(YOURLIB_LIBRARY yourlib)
if (YOURLIB_LIBRARY)
try_compile(YOURLIB_WORKS
bindir
somefile.c
LINK_LIBRARIES ${YOURLIB_LIBRARY})
if (YOURLIB_WORKS)
# do something with your library
else()
# warn the user of stop the configuration process
endif()
endif()