我很确定这是一个反模式,但我想只在生成期间运行CMake脚本的一部分。我想使用CMake生成一个带有一些依赖项的模板项目。该脚本需要复制一些文件并更改几行(文件名及其部分内容)。所以我想做的是将重命名等延迟到代。然后,工作流将采用模板(CMakeLists.txt),使用生成器进行配置,设置项目名称,设置依赖项的路径以及命中生成以获取可立即构建的项目。
有没有办法只在代码上运行代码?我知道脚本可以做同样的事情,但我想将CMake用于此。
编辑2
我删除了原始编辑。以下是简单示例的源结构:
thisInterval = setInterval(function() { x++; count(x,random) }, 1000)
clearInterval(thisInterval)//<--use this when you want to stop the timer
ProjectFile.h和ProjectFile.cpp是必须移动到Build的模板文件,必须重命名并且必须更改某些内容。然而,最初的想法是不修改位于Trunk中的文件。
我写了这个迷你CMakeLists.txt文件:
- Trunk
- CMakeLists.txt
- ProjectFile.cpp
- ProjectFile.h
- Build
在这个例子中,我只处理文件的复制和重命名,直到我注意到这个问题。在.cpp和.h旁边,必须使用正确的名称创建.def。发生的事情是cmake_minimum_required(VERSION 3.5.1) #may be adjusted later on, current WIP runs on 3.5.1
set(PRJ_NAME ProjectName CACHE STRING "Project Name")
project(${PRJ_NAME})
file(COPY "ProjectFile.h" DESTINATION "${CMAKE_BINARY_DIR}\\Source")
file(COPY "ProjectFile.cpp" DESTINATION "${CMAKE_BINARY_DIR}\\Source")
# copy template source / header files to binary dir, create a .def file
file(WRITE "${CMAKE_BINARY_DIR}\\Source\\${PRJ_NAME}.def" "LIBRARY ${PRJ_NAME}\nEXPORTS\nVSTPluginMain\nmain=VSTPluginMain" )
file(RENAME "${CMAKE_BINARY_DIR}\\Source\\ProjectFile.h" "${CMAKE_BINARY_DIR}\\Source\\${PRJ_NAME}.h")
file(RENAME "${CMAKE_BINARY_DIR}\\Source\\ProjectFile.cpp" "${CMAKE_BINARY_DIR}\\Source\\${PRJ_NAME}.cpp")
# create the actual project
add_library(${PRJ_NAME} SHARED ${CMAKE_BINARY_DIR}/Source/${PRJ_NAME}.h ${CMAKE_BINARY_DIR}/Source/${PRJ_NAME}.cpp ${CMAKE_BINARY_DIR}/Source/${PRJ_NAME}.def)
calles完成配置,我希望他们运行doring生成,以便工作流程:
file()
我理解这是对CMake的误用,正确的方法是以某种方式将其分成两部分:1)使用设置项目名称的脚本生成CMake项目2)使用CMake以通常的方式创建项目。