我正在使用cmake 3.8.1与FindSWIG和UseSWIG"扩展"使用swig作为代码生成器。 " swig .i" file包含对不同目录中的文件的include语句。我的CMakeLists.txt的重要部分如下所示:
...
find_package (TCL REQUIRED)
if (TCL_FOUND)
set (HAVE_TCL_H 1)
endif (TCL_FOUND)
find_package (SWIG )
if (SWIG_FOUND)
include(${SWIG_USE_FILE})
set (SWIG_FILE /home/steve/cmake_games/src/foo/bar/bar_swig.i)
set_property(SOURCE ${SWIG_FILE} PROPERTY CPLUSPLUS ON)
swig_add_library (bar_tclext LANGUAGE tcl SOURCES ${SWIG_FILE})
include_directories (/home/steve/cmake_games/src/foo/bar /home/steve/cmake_games/src/this/that)
set_target_properties(bar_tclext PROPERTIES LINKER_LANGUAGE CXX)
swig_link_libraries(bar_tclext ${TCL_LIBRARY})
endif (SWIG_FOUND)
cmake生成make文件没有问题。但是,执行make会导致以下错误消息
/home/steve/cmake_games/src/foo/bar/bar_swig.i:3: Error: Unable to find 'that.iih'
that.iih位于/ home / steve / cmake_games / src / this / that
在生成的Makefile中查看swig调用,我可以看到没有使用include路径调用swig。
您可能认为具有绝对路径的CMakeLists.txt很奇怪。真正!这是因为CMakeLists.txt是由脚本生成的,这些脚本利用了我们在目录拓扑和命名中的约定。我们希望通过生成CMakeLists.txt作为" configure"的一部分来继续执行此操作。过程
我需要在CMakeLists.txt中更改哪些内容?
答案 0 :(得分:0)
你应该尝试在你的情况下设置Counter
,例如:
CMAKE_SWIG_FLAGS
例如:https://github.com/google/or-tools/blob/master/cmake/python.cmake#L57
ps:如果你有编译定义,你也应该手动将它们传递给SWIG,因为你不能说swig宏来获取相关目标的所有属性。