如何根据一个标志在一个CMakeFiles.txt中生成不同的共享库
代码是用如何根据一个标志在一个CMakeFiles.txt中生成不同的共享库,cmake,Cmake,代码是用C++编写的,但它也提供了pythonnumpy接口,因此我们可以用两种模式编译它:带numpy或不带numpy。在Makefile中,我们可以设置一个变量作为该文件的标志。例如,我们可以使用make生成libmylib.so,也可以使用makenumpy=1生成libmylibpy.so。事实上,在Makefile中,我们使用numpy=1来定义带有-DNUMPY\u接口的cxflags 现在我想将该项目更改为cmake项目。以下是最简单的cmakfiles.txt,没有numpy界面
C++
编写的,但它也提供了pythonnumpy
接口,因此我们可以用两种模式编译它:带numpy
或不带numpy
。在Makefile
中,我们可以设置一个变量作为该文件的标志。例如,我们可以使用make
生成libmylib.so
,也可以使用makenumpy=1
生成libmylibpy.so
。事实上,在Makefile
中,我们使用numpy=1
来定义带有-DNUMPY\u接口的cxflags
现在我想将该项目更改为cmake项目。以下是最简单的cmakfiles.txt
,没有numpy
界面:
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
)
如何将cmakfiles.txt
更新为一个标志,以生成具有或不具有numpy
接口的不同共享库?您应该添加一个标记
您可以使用_NUMPY
选项从GUI界面或使用cmake-DWITH_NUMPY=TRUE从命令行设置自定义的
请注意,构建选项将被缓存。也就是说,如果在以后的运行中没有再次指定该选项,它将继续重用上次运行的选项
还请注意,您仅在运行CMake时提供该选项,但在运行生成的Makefile以稍后生成时不提供该选项。因此,如果您想更改选项,还需要重新运行CMake。谢谢,先生。但是我们应该使用cmake2.8.11
或更高版本中的target\u compile\u定义。
# 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()