使用 CMake 打开 Doxygen 文档主页

Open Main Page of Doxygen Documentation with CMake

我有一个使用 Google 测试的项目。我在根目录中有以下 CMake 文件:

set(CMAKE_C_COMPILER gcc)
cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR)
project(PROJECT)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)

set(SOURCES src/a.cpp src/b.cpp)

set(TESTSOURCES test/tests.cpp src/a.cpp src/br.cpp)

set(HEADERS src/a.h src/b.h src/c.h src/c.h)

set(CMAKE_CXX_FLAGS "${MAKE_CXX_FLAGS} -std=c++0x")

find_package(Qt5 COMPONENTS Core Widgets REQUIRED)
find_package(CURL REQUIRED)

# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

if(CMAKE_COMPILER_IS_GNUCC)
    add_definitions(-Wall -Werror -lcurl)
endif(CMAKE_COMPILER_IS_GNUCC)

add_executable(tests ${TESTSOURCES} ${HEADERS} )

target_link_libraries(beergame-tests curl Qt5::Widgets ${GTEST_LIBRARIES} pthread)

目前,我还没有在 CMakeLists.txt 中添加任何关于文档的内容。要生成文档,我只使用 doxygen config-file,它会在我的 latex 文件夹中创建 html/latex 文档。但是,它并没有真正打开文档及其主页。

如何编辑我的 CMakeLists.txt 使其自动打开文档并使用什么命令?

为了运行 tests.cpp,我这样做:

cd build
cmake ..
make

如果您想在CMake 完成之前构建并打开Doxygen 文档,您可以在CMake 配置阶段使用execute_process() 构建它。您可以调用 firefox <path-to-html>/index.html(或其他浏览器)作为单独的 COMMAND 以在构建后打开文档。

find_package(Doxygen)
if(DOXYGEN_FOUND)
    execute_process(
        COMMAND ${DOXYGEN_EXECUTABLE} config-file.doxygen
        COMMAND firefox ${CMAKE_CURRENT_SOURCE_DIR}/doc/html/index.html
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
        COMMENT "Generating and opening documentation for project: tests"
    )
endif()

注意,在Windows10,您可能不需要指定要使用的浏览器;只需在 COMMAND 之后列出 index.html 文件即可在默认浏览器中打开它。

如果您计划将 Doxygen 构建到一个单独的 目标 ,您可以使用 add_custom_target():

做类似的事情
find_package(Doxygen)
if(DOXYGEN_FOUND)
    add_custom_target(tests-Documentation
        COMMAND ${DOXYGEN_EXECUTABLE} config-file.doxygen
        COMMAND firefox ${CMAKE_CURRENT_SOURCE_DIR}/doc/html/index.html
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
        COMMENT "Generating documentation for project: tests"
        VERBATIM
    )
endif()