Skip to content

Commit f956d40

Browse files
committed
fix: update MinGW library handling in CMakeLists.txt to copy existing Node.js library
1 parent de1a486 commit f956d40

1 file changed

Lines changed: 13 additions & 20 deletions

File tree

CMakeLists.txt

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -422,26 +422,19 @@ target_compile_options(${PROJECT_NAME} PRIVATE ${FFTW3F_CFLAGS_OTHER})
422422

423423
# Link libraries with MinGW-specific handling
424424
if(WIN32 AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
425-
# Windows MinGW: 从 node.exe 生成导入库
426-
# MinGW 的 ld 不能使用 MSVC 的 .lib 文件
427-
428-
find_program(NODE_EXECUTABLE node REQUIRED)
429-
set(MINGW_NODE_LIB "${CMAKE_BINARY_DIR}/libnode.a")
430-
431-
# 使用 gendef 和 dlltool 从 node.exe 生成 MinGW 导入库
432-
# 注意: gendef的输出重定向需要使用 sh -c
433-
add_custom_command(
434-
OUTPUT "${MINGW_NODE_LIB}"
435-
COMMAND sh -c "gendef - '${NODE_EXECUTABLE}' > '${CMAKE_BINARY_DIR}/node.def'"
436-
COMMAND dlltool -d "${CMAKE_BINARY_DIR}/node.def" -l "${MINGW_NODE_LIB}"
437-
COMMENT "Generating MinGW import library from node.exe"
438-
)
439-
440-
add_custom_target(generate_node_lib DEPENDS "${MINGW_NODE_LIB}")
441-
add_dependencies(${PROJECT_NAME} generate_node_lib)
442-
443-
target_link_libraries(${PROJECT_NAME} PRIVATE "${MINGW_NODE_LIB}")
444-
message(STATUS "MinGW build: Will generate import library from node.exe")
425+
# Windows MinGW: 复制cmake-js提供的库文件
426+
# 注意: 即使是MSVC的.lib文件,MinGW也能使用(已在1.1.6版本验证)
427+
set(LOCAL_NODE_LIB "${CMAKE_BINARY_DIR}/node.lib")
428+
429+
# 检查并复制 Node.js 库文件
430+
if(EXISTS "${CMAKE_JS_LIB}")
431+
message(STATUS "Copying Node.js library from: ${CMAKE_JS_LIB}")
432+
configure_file("${CMAKE_JS_LIB}" "${LOCAL_NODE_LIB}" COPYONLY)
433+
target_link_libraries(${PROJECT_NAME} PRIVATE "${LOCAL_NODE_LIB}")
434+
message(STATUS "MinGW build: Using copied Node.js library: ${LOCAL_NODE_LIB}")
435+
else()
436+
message(STATUS "MinGW build: CMAKE_JS_LIB not found, skipping Node.js library linking")
437+
endif()
445438
else()
446439
# Other platforms: link CMAKE_JS_LIB if available
447440
if(CMAKE_JS_LIB)

0 commit comments

Comments
 (0)