Hyperlink 使用目标链接库的宏中的CMake错误
我编写了一个宏来调用函数TARGET_LINK_库:Hyperlink 使用目标链接库的宏中的CMake错误,hyperlink,macros,cmake,Hyperlink,Macros,Cmake,我编写了一个宏来调用函数TARGET_LINK_库: macro(Link_Libs cur_target) #ATLAS LIBS on Linux add_library(ptlapack STATIC IMPORTED) set_property(TARGET ptlapack PROPERTY IMPORTED_LOCATION /usr/local/atlas/lib/libptlapack.a) TARGET_LINK_LIBRARIES(cur
macro(Link_Libs cur_target)
#ATLAS LIBS on Linux
add_library(ptlapack STATIC IMPORTED)
set_property(TARGET ptlapack PROPERTY
IMPORTED_LOCATION /usr/local/atlas/lib/libptlapack.a)
TARGET_LINK_LIBRARIES(cur_target ptlapack)
endmacro()
然后我从project调用了宏
project(CPU_Matrix)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(./src/ SRC_LIST1)
include_directories(./include/)
add_executable(CPU_Matrix ${SRC_LIST1} )
INCLUDE(${CMAKE_MODULE_PATH}/LinkLibs.txt NO_POLICY_SCOPE)
Link_Libs(CPU_Matrix_Class_Test_Satisfy)
当我运行CMake时,它给出了错误:
Cannot specify link libraries for target "cur_target" which
is not built by this project
如何链接宏中的库?这可能是因为您没有在宏中取消引用变量
cur\u target
。您必须执行以下操作:
target_link_libraries(${cur_target} ptlapack)
除此之外,您只能调用此宏一次,因为您不能不断重复添加ptlapack。您应该添加一个保护,以避免多次尝试添加库,例如
if(NOT TARGET ptlapack)
add_library(ptlapack STATIC IMPORTED)
set_property(TARGET ptlapack PROPERTY
IMPORTED_LOCATION /usr/local/atlas/lib/libptlapack.a)
endif()
最后,像这样指定一个本地路径是不好的做法。“/usr/local/atlas/lib/libptlapack.a”可能是您机器上的库所在位置,但并非每台机器都是这样,而且它肯定不是跨平台的:-)谢谢,它可以工作。我学习图书馆。如何链接我自己安装的库(而不是从存储库)?您可以使用来定位库。