CMake:链接到与Qt5链接的库

时间:2017-04-06 16:35:38

标签: c++ qt cmake

我有一个使用Qt5的库。我用这个CMakeLists.txt文件构建它:

cmake_minimum_required (VERSION 3.0)

project (testLib LANGUAGES CXX) 

set(CMAKE_AUTOMOC ON)  
set(CMAKE_AUTOUIC ON)     
set(CMAKE_INCLUDE_CURRENT_DIR ON) 

find_package(Qt5 REQUIRED Widgets)  

add_library(testLib SHARED
    src/TestClass.cpp
    src/TestClass.h
)

target_include_directories(testLib PUBLIC 
    ${CMAKE_CURRENT_SOURCE_DIR}/src
)    

target_link_libraries(testLib PUBLIC Qt5::Widgets)

export(TARGETS testLib FILE testLib-exports.cmake)

现在我尝试在构建路径中将可执行文件链接到此库。这是我到目前为止所尝试的:

cmake_minimum_required (VERSION 3.0)

project(TestProject)

add_executable(myexec src/main.cpp )
include(/path/to/testLib-exports.cmake)

target_link_libraries(myexec testLib)

我收到此错误:

  

目标" myexec"链接到目标" Qt5 :: Widgets"但目标不是   找到。对于IMPORTED,可能缺少find_package()调用   目标,或ALIAS目标丢失?

我不想在myexec的cmake文件中明确使用find_package(),但希望它是可传递的。那我该如何链接testLib呢?如果答案不在构建路径中,则可以。

编辑:我将导出行更改为:

export(TARGETS testLib FILE testLib-exports.cmake EXPORT_LINK_INTERFACE_LIBRARIES)

这似乎正是我所需要的,但生成和不使用EXPORT_LINK_INTERFACE_LIBRARIES的文件是相同的。两者如果他们说

  

此文件不依赖于其他导入的目标   已从同一项目导出但在单独的导出集中。

据我了解,它应该使用testLib的目标LINK_INTERFACE_LIBRARIES属性,但我注意到它是NOTFOUND。也许这就是问题?但是,INTERFACE_LINK_LIBRARIES有Qt5 :: Widgets。

0 个答案:

没有答案