CMake和Latex

ssb*_*ssb 8 latex cmake

我正在使用UseLATEX.cmake来编译我的项目文档文件夹.

我的项目安排如下 -

.
??? CMakeLists.txt
??? bin
??? build
??? cmake
?   ??? CMakeCompilerFlags.cmake
?   ??? CMakeDefaults.cmake
?   ??? MacroEnsureOutOfSourceBuilds.cmake
?   ??? UseLATEX.cmake
??? doc
?   ??? Doc.tex
?   ??? CMakeLists.txt
?   ??? images
?       ??? img1.png
?       ??? img2.png
?       ??? img3.png
?       ??? img4.jpeg
............
??? src
    ??? CMakeLists.txt
    ??? file1.cpp
    ??? file2.cpp
    ??? file3.cpp
Run Code Online (Sandbox Code Playgroud)

我的根级cmake文件是这样的......

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

# Set path for CMake
set(CMAKE_MODULE_PATH
    "${CMAKE_SOURCE_DIR}/cmake"
    ${CMAKE_MODULE_PATH}
)

# Define project settings
project(proj)
set(APPLICATION_NAME ${PROJECT_NAME})
include(CMakeDefaults)

# Compile Program and Docs
include_directories(inc)
add_subdirectory(src)
add_subdirectory(doc)
Run Code Online (Sandbox Code Playgroud)

并且文档文件中的CMakeList文件是 -

include(UseLATEX)

ADD_LATEX_DOCUMENT(Doc.tex
    #BIBFILES mybib.bib
    IMAGE_DIRS images
    DEFAULT_PDF
)
Run Code Online (Sandbox Code Playgroud)

现在我在build文件夹中编译我的项目.有什么办法可以将Doc.pdf文件build/doc夹中创建的文件复制回我原来的构建文件夹吗?

Fra*_*ser 7

由于ADD_LATEX_DOCUMENT添加了pdf此处命名的CMake目标,您应该可以使用add_custom_command.尝试在通话/doc/CMakeLists.txt 结束后添加以下内容ADD_LATEX_DOCUMENT:

add_custom_command(TARGET pdf POST_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy
                       ${CMAKE_CURRENT_BINARY_DIR}/Doc.pdf
                       ${CMAKE_BINARY_DIR}/Doc.pdf)
Run Code Online (Sandbox Code Playgroud)

每次构建目标时,此自定义命令都会调用cmake可执行文件(保存在变量中${CMAKE_COMMAND})以及-E copy参数pdf.