我想构建 openssl 并将我的项目链接到它。在我的项目中,我有一个名为 net 的库,它是使用 openssl 的部分。所以在我的 net\CMakeList 中,我添加了
include_directories(
../
+ ../../../ext/openssl/inc32/
)
add_library(net STATIC ${sources})
+ ADD_DEPENDENCIES(net openssl)
在用于组织所有外部库的 ext 文件夹中,我在名为 openssl 的文件夹中有一个全新的解压缩 openssl 源代码。然后我编辑了 ext\CmakeList
message(STATUS "Configuring OpenSSL")
set(openssl_dir openssl)
if (CMAKE_CL_64)
include(ExternalProject)
set(OPENSSL_CONFIGURE perl\ Configure\ VC-WIN64A)
set(OPENSSL_MAKE ms\\do_win64a\ &&\ nmake\ -f\ ms\\ntdll.mak)
ExternalProject_Add(openssl
PREFIX openssl
#-- Download Step ----------
SOURCE_DIR ${CMAKE_SOURCE_DIR}/ext/openssl
#--Configure step ----------
CONFIGURE_COMMAND ${OPENSSL_CONFIGURE}
#--Build Step ----------
BUILD_COMMAND ${OPENSSL_MAKE}
BUILD_IN_SOURCE 1
#--install Step ----------
INSTALL_COMMAND ""}
)
endif()
编译时,编译器报错找不到包含文件,openssl源代码根本没有编译,因为没有out32dll和inc32。
我的问题是: ExternalProject_Add 何时真正构建项目?如果我根据openssl制作我的网络库,这是否意味着当我构建网络时需要先检查并构建openssl?