CMake add_executable in another directory

2020-07-22 17:11发布

I am making a bunch of tests in order to verify that each library are correctly linked, and then some tests for the functionalities of my code.

I would like to have X different executable in the directory project/build/tests and I want my program to be build in project/build

cmake_minimum_required(VERSION 3.0)
project(ProjectName)
# Linking library ...
add_executable(${PROJECT_NAME} ${SRC_LIST} ${INCLUDE_LIST})

until here, everything is fine and works as wanted but then I don't know how to tell cmake to create my tests in another directory as this does not work

add_executable(tests/OpenMP_Check tests/openmp.cpp)

my project has this architecture :

project :

  • src
  • include
  • lib
  • build
    • tests
  • tests

To put it in a nutshell : How do I ask CMake to create my tests in another directory ?

标签: c++ cmake
2条回答
再贱就再见
2楼-- · 2020-07-22 17:26

Use set_target_properties on your test executable to set its RUNTIME_OUTPUT_DIRECTORY to just ${CMAKE_BINARY_DIR}.

查看更多
狗以群分
3楼-- · 2020-07-22 17:29

Thanks to arrowd I managed to do it with these lines

add_executable(OpenMP_Check tests/openmp.cpp)
set_target_properties(OpenMP_Check PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")

After looking for the way to use "set_target_properties" (and the doc of CMake is honestly unreadable) I found this thread, which makes this question a duplicate. how do I make cmake output into a 'bin' dir?

查看更多
登录 后发表回答