代码是用C++
编写的,但它也提供了python-numpy
接口,因此我们可以在with-numpy
或without-numpy
两种模式下编译它。在Makefile
中,我们可以设置一个变量作为它的标志。例如,我们可以使用make
生成libmylib.so
,也可以使用make numpy=1
生成libmylibpy.so
。事实上,在Makefile
中,我们使用numpy=1
来定义CXXFLAGS
与-DNUMPY_INTERFACE
。
现在我想将项目更改为cmake项目。下面是没有numpy
接口的最简单的CMakeFiles.txt
:
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
project(mylib)
include_directories(include)
add_library(mylib SHARED
include/common.h
include/util.h
src/common.cpp
src/util.cpp
)
我如何将CMakeFiles.txt
更新为标志,以生成具有或不具有numpy
接口的不同共享库?
您应该添加一个构建选项。
# your library
add_library(mylib ...)
# add an option to include numpy
option(WITH_NUMPY "Determines whether to build with or without numpy.")
# if numpy is requested, set the NUMPY_INTERFACE preprocessor flag
if(WITH_NUMPY)
target_compile_definitions(mylib PUBLIC NUMPY_INTERFACE)
endif()
您可以从GUI界面设置自定义WITH_NUMPY
选项,或者使用cmake -DWITH_NUMPY=TRUE <path_to_source>
从命令行设置。
注意,构建选项将被缓存。也就是说,如果您在以后的运行中没有再次指定该选项,它将继续重用上次运行的选项。
还请注意,您只在运行CMake时提供该选项,而不是在运行生成的Makefile以稍后构建时提供该选项。因此,如果你想改变选项,你还需要重新运行CMake.