How to build cmake ExternalProject while configurating main one?

前端 未结 1 1272
南旧
南旧 2020-12-06 13:51

It can be a pain to refrence ExternalProjects when their install targets are messed up. So one may want to build and install ExternalProjects once before generating main pro

相关标签:
1条回答
  • 2020-12-06 14:47

    You may use cmake call within execute_process for configure and build CMake project, which contains ExternalProject:

    other_project/CMakeLists.txt:

    project(other_project)
    include(ExternalProject)
    
    ExternalProject_Add(<project_name> <options...>)
    

    CMakeLists.txt:

    execute_process(
        COMMAND ${CMAKE_COMMAND} --build . ${CMAKE_SOURCE_DIR}/other_project
        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/other_project
    )
    

    Such a way other_project will be configured and built (because of --build option) in directory ${CMAKE_BINARY_DIR}/other_project. If you do not disable installation in ExternalProject_Add call, then it will performed when building other_project.

    Normally, you want some options to ExternalProject, like SOURCE_DIR, BINARY_DIR, INSTALL_DIR, to be deduced from variables in the main project. You have two ways for achive that:

    1. Create CMakeLists.txt for other_project with configure_file, called from main project (before execute_process command).

    2. Pass variables from main project as -D parameters to ${CMAKE_COMMAND}.

    0 讨论(0)
提交回复
热议问题