如何在没有完整路径的情况下链接静态库?

时间:2020-03-17 01:01:33

标签: cmake

<amp-bind-macro id="formatNumber" arguments="value" expression="(value<0?'-':'')+(abs(value)||0).toFixed().split('').map((v,i,a)=>(i&&(a.length-i)%3==0?',':'')+v).join('')"></amp-bind-macro>

CMakeLists.txt:

(value<0?'-':'')+

如何在没有expression的情况下链接:

root
 +-- main.cpp
 +-- CMakeLists.txt
 +-- liblib1.a

如何使cmake_minimum_required(VERSION 3.5) project(testlib LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(testlib main.cpp) target_link_libraries(testlib ${CMAKE_SOURCE_DIR}/liblib1.a ) 路径对CMAKE ${CMAKE_SOURCE_DIR}可见?


顺便说一句,下面的target_link_libraries(testlib lib1 ) 无效

${CMAKE_SOURCE_DIR}

2 个答案:

答案 0 :(得分:2)

使用target_link_directories

指定链接器在链接给定目标时应在其中搜索库的路径。

...

注意:很少需要此命令,应在有可能的情况下避免使用此命令 其他选择。首选将完整的绝对路径传递给库,其中 可能,因为这样可以确保始终使用正确的库 链接。

target_link_directories(testlib PUBLIC ${CMAKE_SOURCE_DIR})

答案 1 :(得分:0)

要在CMake中指定lib的目录为link_directories

我没有得到作品,因为 link_directories必须放在add_executable 前面。

像这样:

link_directories(${CMAKE_SOURCE_DIR})

add_executable(testlib main.cpp)

target_link_libraries(testlib
    lib1
)

顺便说一句,我发现有关此CMake依赖项用法的很棒的教程。 https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/