我尝试运行 SoftHSMv2,我想在外部项目中进行此操作 https://github.com/opendnssec/SoftHSMv2这是我下载的git中的链接,我想在src文件夹下添加项目CLI。
这是CmakeList.txt:
project(CLI)
set(INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/../lib/pkcs11
)
set(SOURCES main.cpp
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
list(APPEND INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/../../lib/win32 ${CMAKE_CURRENT_SOURCE_DIR}/../win32)
endif()
include_directories(${INCLUDE_DIRS})
add_executable(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME} softhsm2-static ${CRYPTO_LIBS} ${SQLITE3_LIBS} ${CMAKE_DL_LIBS})
target_compile_options(${PROJECT_NAME} PRIVATE ${COMPILE_OPTIONS})
install(TARGETS ${PROJECT_NAME}
DESTINATION ${CMAKE_INSTALL_BINDIR}
)
install(FILES ${PROJECT_NAME}.1
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
)
这是我的 MakeFile.am:
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
bin_PROGRAMS = cli
AM_CPPFLAGS = -I$(srcdir)/common \
-I$(srcdir)/crypto \
-I$(srcdir)/data_mgr \
-I$(srcdir)/handle_mgr \
-I$(srcdir)/object_store \
-I$(srcdir)/pkcs11 \
-I$(srcdir)/session_mgr \
-I$(srcdir)/slot_mgr \
@CRYPTO_INCLUDES@
lib_LTLIBRARIES = libsofthsm2.la
clisofthsm2_la_SOURCES = main.cpp
libsofthsm2_la_LDFLAGS = -version-info @VERSION_INFO@ \
-avoid-version -module
# Create a convenience library from all the other convenience library; this is
# necessary to resolve circular dependencies when statically linking the test
# executables
noinst_LTLIBRARIES = libsofthsm_convarch.la
libsofthsm_convarch_la_SOURCES =
libsofthsm_convarch_la_LIBADD = $(libsofthsm2_la_LIBADD)
EXTRA_DIST = $(srcdir)/CMakeLists.txt \
$(srcdir)/*.h \
$(srcdir)/pkcs11/*.h \
$(srcdir)/*.cpp \
$(srcdir)/pkcs11/*.cpp \
命令 cmake .. 工作并为我创建了 sln 文件 但是当我尝试运行该项目时,我在另一个项目中包含了很多错误, 例如: 严重性代码 说明 项目文件行抑制状态工具 错误(活动) E1696 无法打开源文件“SessionManager.h”CLI C:\Users \Desktop\BBB\SoftHSM2_Asym\src\lib\SoftHSM.h 40 Visual C++ IntelliSense
我需要如何更改 cmake 才能使其工作? 谢谢!
要在 CMake 中添加外部项目并引用内部项目,可以按照以下步骤操作:
从 GitHub 存储库下载外部项目 SoftHSMv2:https://github.com/opendnssec/SoftHSMv2。 在项目的根目录中创建一个新目录,我们将其称为external。 将下载的 SoftHSMv2 项目移动到外部目录中。 在主 CMakeLists.txt 文件中,添加以下行以包含外部项目:
# Add the external project
add_subdirectory(external/SoftHSMv2)
在 CLI 项目的 CMakeLists.txt 文件中,更新 include_directories 行以包含必要的内部项目目录:
include_directories(${INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/../lib/pkcs11
${PROJECT_SOURCE_DIR}/../lib/SoftHSMv2/src
${PROJECT_SOURCE_DIR}/../lib/SoftHSMv2/src/lib
${PROJECT_SOURCE_DIR}/../lib/SoftHSMv2/src/lib/pkcs11
)
更新 target_link_libraries 行以链接内部项目中的必要库:
target_link_libraries(${PROJECT_NAME} softhsm2-static ${CRYPTO_LIBS} ${SQLITE3_LIBS} ${CMAKE_DL_LIBS} softhsm2)
最后,确保更新 Makefile.am 文件中的路径以包含必要的内部项目目录:
AM_CPPFLAGS = -I$(srcdir)/common \
-I$(srcdir)/crypto \
-I$(srcdir)/data_mgr \
-I$(srcdir)/handle_mgr \
-I$(srcdir)/object_store \
-I$(srcdir)/pkcs11 \
-I$(srcdir)/session_mgr \
-I$(srcdir)/slot_mgr \
-I$(srcdir)/lib \
-I$(srcdir)/lib/pkcs11 \
-I$(srcdir)/lib/SoftHSMv2/src \
-I$(srcdir)/lib/SoftHSMv2/src/lib \
-I$(srcdir)/lib/SoftHSMv2/src/lib/pkcs11 \
@CRYPTO_INCLUDES@
libsofthsm2_la_LDFLAGS = -version-info @VERSION_INFO@ \
-avoid-version -module
clisofthsm2_la_SOURCES = main.cpp
通过执行这些步骤,您应该能够将 SoftHSMv2 的内部项目包含在 CLI 项目中,并解决您遇到的包含错误。