使用target_link_libraries来以lib *开头的库

时间:2018-12-13 02:29:24

标签: cmake

我正在尝试将程序(hello)与一个不以'lib'开头的特殊库(/path/abc.so)链接。

这是我的CMakeLists.txt

add_executables(hello hello.c)

target_link_libraries(hello /path/abc.so)

它工作正常,但是还有其他方法可以避免这种完整路径(/path/abc.so)吗? 我不想建立abc.so的符号链接,也不想修改abc.so本身。

1 个答案:

答案 0 :(得分:0)

最好的选择不是直接链接库,而是使用导入的目标: 您可以将库目标设为

var query = dbContext.Addresses
    .Where(address => address.City == "New York" && ...)
    .Select(address => new
    {
         // only properties you plan to use
         Id = address.Id,
         Name = address.Name,

         ReceivedNotes = address.ReceivedNotes
             .Where(note => note.DeliveryDate.Year == 2018)
             .Select(note => new
             {
                 // only properties you plan to use:
                 Title = note.Title,
                 ...

                 // no need for this, you know it equals Id
                 // AddressId = note.FromId,
             }),
    });

然后您可以将其链接为目标:

add_library(ABC SHARED IMPORTED)
set_target_properties(ABC PROPERTIES
            IMPORTED_LOCATION path/to/library/abc.so
            INTERFACE_INCLUDE_DIRECTORIES path/to/include
            )

下一步是拥有一个库查找模块或配置模块,因此您无需在CMakeLists.txt中定义完整路径,而是搜索该库,或仅将.cmake文件与所有路径。

看看HEREHERE