CMake外部库链接?

时间:2013-06-24 04:57:35

标签: cmake

似乎cmake无法确定哪些库可以与当前编译器一起使用,或者我希望cmake只使用已使用相同编译器编译的库。

我正在使用find_library来查找所需的库,但似乎无法确定该库是否实际可用。它设法按名称查找库,但在我为MinGW进行配置时使用了“.lib”扩展名。我是否必须为我编译库的每个编译器创建文件夹,并在我的脚本中为每个编译器添加if语句?这似乎与我认为find_library能够做到的事情相反。也许我在滥用它?谁有更好的想法?

1 个答案:

答案 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()