使用cmake.js和谷歌测试来测试node.js插件



我正在尝试用谷歌测试测试一个节点js插件(用cmake-js构建(。我是在Mac操作系统上构建的。

插件目标构建和运行良好,但我对谷歌测试目标有问题。

我收到了与未定义的V8方法相关的链接错误。

在CMakeLists.txt中,我打印了(带有消息(变量CMAKE_JS_SRC和CMAKE _JS_LIB,它们都是空的。如果CMAKE_JS_LIB为空,我看不出target_link_libraries((应该如何将node/v8库添加到我的测试可执行文件中。。。

如果我不使用add_executable((,而是使用add_library((来构建google_test目标,但我当然不能运行它,因为它不再是可执行文件了。

你能帮忙吗?

以下是我的CMakeLists.txt:

make_minimum_required(VERSION 3.14)
include_directories(my_project)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_C_FLAGS "-Wno-pointer-sign -fno-signed-char -std=c99 -fpermissive")
set(CMAKE_CXX_FLAGS "-Wno-pointer-sign -fno-signed-char -std=c99 -fpermissive")
project (addon)
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.12.1
)
FetchContent_MakeAvailable(googletest)
include_directories(${CMAKE_JS_INC} "my_project/include/pkcs11/v2.40/")
file(GLOB SOURCE_FILES "my_project/*.c" "my_project/*.h" "my_project/*.cpp")
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC})
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB} )
## google_test
enable_testing()
file(GLOB TEST_FILES "test/*.cc" "test/utils/*.c")
add_executable(
my_project_google_test
${TEST_FILES)
)
target_include_directories(my_project_google_test
PRIVATE
test/utils/*.h
)
target_link_libraries(
my_project_google_test
PRIVATE
GTest::gtest_main
${CMAKE_JS_LIB}
)
include(GoogleTest)
gtest_discover_tests(my_project_google_test)

CMAKE_JS_LIB在除Windows之外的所有位置都为空。

如果你还没有从Homebrew安装v8:brew install v8

将应用程序链接到v8

target_link_libraries(
my_project_google_test
PRIVATE
v8
)

可能需要其他v8库,但您没有发布所有错误:v8_libbase v8_libplatform

最新更新