是一个clion在windows下写c程序时候,在cmakelists.txt里编辑了头文件路径和库文件路径。
编译时总是提示中不到链接库,问题文件如下:
# cmake_minimum_required(VERSION <specify CMake version here>)
cmake_minimum_required(VERSION 3.16)
project(untitled C)
set(CMAKE_C_STANDARD 99)
set(INC_DIR C:/OpenSSL-Win64/include/)
set(LINK_DIR C:/OpenSSL-Win64/lib/)
set(SRC_LIST main.c)
include_directories(${INC_DIR})
link_directories(${LINK_DIR})
link_libraries(ssl crypto)
add_executable(untitled ${SRC_LIST})
target_link_libraries(untitled ssl)
结果编译总是报错:
C:/PROGRA~2/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lssl
C:/PROGRA~2/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lcrypto
C:/PROGRA~2/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lssl
C:/PROGRA~2/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lcrypto
明明头文件路径和lib路径都有文件,还是提示找不到:
C:\OpenSSL-Win64\lib 的目录
2020/04/29 21:29 <DIR> .
2020/04/29 21:29 <DIR> ..
2017/11/03 21:44 1,840 capi.lib
2017/11/03 21:44 1,866 dasync.lib
2017/11/03 21:44 99,405 libcrypto-1_1-x64.def
2017/11/03 21:44 925,194 libcrypto.lib
2017/11/03 21:44 10,999 libssl-1_1-x64.def
2017/11/03 21:44 97,230 libssl.lib
2017/11/03 21:44 1,736 openssl.lib
2017/11/03 21:44 1,892 ossltest.lib
2017/11/03 21:44 1,876 padlock.lib
2020/04/29 21:29 <DIR> VC
9 个文件 1,142,038 字节
3 个目录 53,557,956,608 可用字节
最后发现是 linux 和 windows 对lib库处理不同,linux直接填 ssl 就行,到windows就的填 libssl,这样修改后就正常了。
下面是正常的配置文件:注意 ssl 改成了 libssl, crypto改成了 libcrypto。
# cmake_minimum_required(VERSION <specify CMake version here>)
cmake_minimum_required(VERSION 3.16)
project(untitled C)
set(CMAKE_C_STANDARD 99)
set(INC_DIR C:/OpenSSL-Win64/include/)
set(LINK_DIR C:/OpenSSL-Win64/lib/)
set(SRC_LIST main.c)
include_directories(${INC_DIR})
link_directories(${LINK_DIR})
link_libraries(libssl libcrypto)
add_executable(untitled ${SRC_LIST})
target_link_libraries(untitled libssl)