我想做的是致电
add_subdirectory(ext/oglplus)
并完成它。不幸的是,事情并非那么简单。有一个巨大的buildcript,可以检测各种opengl设置。所以我尝试了以下
ExternalProject_Add(liboglplus
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ext/oglplus
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ext/oglplus/configure.py --use-glew
BUILD_COMMAND ${MAKE})
我遇到的问题并不是真的想要像那样构建它。它也没有正确构建,因为由于某种原因它想要安装库,因为没有安装目标,它将中止编译。
但构建脚本正在调用cmake。
所以我想要的是告诉cmake使用“cofigure.py”而不是“cmake ..”然后像任何其他cmake库一样使用它。
这可能吗?
答案 0 :(得分:1)
我曾经使用CMake从Linux Kernel KBuild调用
ADD_CUSTOM_COMMAND()
和ADD_CUSTOM_TARGET()
这样,您可以运行任意命令(如config.py)并使用输出。
首先使用所有命令行选项设置命令作为CMake变量,在这种情况下,这将调用config.py
脚本${CMAKE_CURRENT_SOURCE_DIR}/ext/oglplus/
。
而不是在命令中对路径的路径进行编码(添加ext/oglplus
),我认为将WORKING_DIRECTORY
添加到自定义命令可能更好:
add_custom_command
SET(KBUILD_CMD ${CMAKE_MAKE_PROGRAM}
-C ${KERNEL_BUILD_DIR}
CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH}
EXTRA_CFLAGS=${KBUILD_EXTRA_CFLAGS}
INSTALL_MOD_PATH=${INSTALL_MOD_PATH}
M=${CMAKE_CURRENT_SOURCE_DIR}
KBUILD_EXTRA_SYMBOLS=${depends_module_ksyms}
)
添加一个调用构建脚本的自定义命令,并在CMAKE_CURRENT_BINARY_DIRECTORY
中创建一个文件(注意第二个COMMAND
以触摸文件)
ADD_CUSTOM_COMMAND(
OUTPUT ${module_name}.built
COMMAND ${KBUILD_CMD} modules
COMMAND cmake -E touch ${module_name}.built
COMMENT "Kernel make modules ${module_name}"
VERBATIM
)
添加自定义目标,它总是过时,但如果您希望自动调用它,请添加ALL
,否则您必须明确地调用make module_build
,我想这就是您想要的。< / p>
ADD_CUSTOM_TARGET("${module_name}_build" ALL
DEPENDS ${depends_module_ksyms}
${CMAKE_CURRENT_BINARY_DIR}/${module_name}.built
COMMENT "Building Kernel Module ${module_name}"
)