4

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 ?

Patafikss
  • 154
  • 1
  • 2
  • 15

2 Answers2

8

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?

Patafikss
  • 154
  • 1
  • 2
  • 15
7

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

arrowd
  • 33,231
  • 8
  • 79
  • 110