cmake找不到链接所需的库

时间:2017-08-22 16:49:26

标签: oracle cmake oci

我正在将一个make文件转换为cmake。

Make:
ORACLE = -L${ORACLE_HOME}/lib/ -lclntsh \
-I${ORACLE_HOME}/rdbms/public 

CMAKE:
include_directories(${ORACLE_DIR}/include)
link_directories(${ORACLE_DIR}/lib)
project(DB_I)
add_executable(DB_I DB_I.c)
target_link_libraries(DB_I LINK_PUBLIC ${PROJECT_LINK_LIBS} -lclntsh)
install(TARGETS DB_I DESTINATION ${OPEN_FOX_BIN_DIR})

Error:
[ 53%] Linking C executable DB_I
/usr/bin/ld: cannot find -lclntsh
collect2: error: ld returned 1 exit status

我有ORACLE_HOME指向文件所在的目录。编译器正在找到它需要的OCI.H文件。

Directory structure...
ORACLE_HOME
  include
     oci.h
  lib
     libclntsh.so

我甚至尝试将库移动到与源相同的目录中。 我甚至将 clntsh 复制到/ usr / bin。

我错过了什么? 感谢

3 个答案:

答案 0 :(得分:0)

您不需要target_link_libraries中的前导-l

target_link_libraries(DB_I LINK_PUBLIC ${PROJECT_LINK_LIBS} clntsh)

答案 1 :(得分:0)

对不起 我刚刚注意到库文件是一个链接。而且链接错了。 我修好了,一切都很好。 谢谢你的关注

答案 2 :(得分:0)

问题是ORACLE_HOME是一个环境变量。 在Make中你获得${ORACLE_HOME}的价值但在cmake中你必须写$ENV{ORACLE_HOME}

同时更改

link_directories(${ORACLE_DIR}/lib)

进入

link_directories($ENV{ORACLE_DIR}/lib)