我如何说服 CMake 文件扩展名 .swig 等同于 .i?
我将如何为其他文件扩展名执行此操作?
语境
我在 Swig 中使用 CMake(版本 2.8,最低 2.6)。如果我将 swig 接口文件设置为具有 .i 扩展名,那么一切都会自动运行(我最终会得到一个可从目标语言解释器 tclsh 加载的工作 .dll“模块”)。如果我给它 .swig 扩展名,CMake 不知道如何处理它。我想在我的编辑器中使用一个扩展而不是另一个扩展来减少语法高亮。
现有的 CMake 文件
应评论者的要求,这是 mah' 文件:
find_package(swig REQUIRED)
include(${SWIG_USE_FILE})
find_package(tcl REQUIRED)
include_directories(${TCL_INCLUDE_PATH})
set(CMAKE_SWIG_FLAGS -prefix thoughtjack -namespace)
link_directories(${OEEG_BINARY_DIR}/oeeg)
set(swig_interface_files native.i)
set_source_files_properties(${swig_interface_files} PROPERTIES CPLUSPLUS ON)
file(GLOB_RECURSE native_source_files *.cpp *.c)
swig_add_module(thoughtjack_native tcl ${swig_interface_files} ${native_source_files})
swig_link_libraries(thoughtjack_native ${TCL_LIBRARY} oeeg)
file(GLOB script_files ${CMAKE_CURRENT_SOURCE_DIR}/*.tcl)
install(FILES ${script_files} DESTINATION opt/thoughtjack)
install(TARGETS thoughtjack_native DESTINATION opt/thoughtjack)
add_custom_target(
thoughtjack
DEPENDS thoughtjack_native
SOURCES ${script_files}
)
custom_xyz 位与“源”位和其他装饰一起告诉 CMake 通过 MSVS 解决方案文件提供这些。如前所述,只需将文件从 .swig 重命名为 .i(如此处所示)即可为我提供一个工作的、可加载的 Tcl 模块,该模块可以按照 native.(swig|i) 文件导出我期望的所有功能。