我正在尝试将程序(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本身。
答案 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文件与所有路径。