Как получить имя исполняемого файла CMake в определении препроцессора C ++ - PullRequest
0 голосов
/ 20 марта 2019

У меня есть два исполняемых определения в моем файле CMake

add_executable(ProjectFoo ...)
add_executable(ProjectFoo_UnitTests ...)

Есть ли способ получить имя исполняемого файла (либо ProjectFoo, либо ProjectFoo_UnitTests) в коде C ++, как показано ниже? Синтаксис может быть неверным, но я надеюсь, что он проясняет намерение.

#if executable_name == ProjectFoo
...

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Если вы просто хотите во время выполнения узнать, является ли исполняемый исполняемый файл конфигурацией модульного теста, передайте выделенное определение препроцессора в исполняемый файл модульного теста:

target_compile_definitions(ProjectFoo_UnitTests IS_UNIT_TEST)

И проверьте это определение в своем коде C ++:

#if defined (IS_UNIT_TEST)
# include "some_mock.hpp"
#endif
1 голос
/ 21 марта 2019

Вы можете «грузить» каждый свой исполняемый файл со своим собственным макроопределением.В этом макросе вы можете хранить имя исполняемого файла:

target_compile_definitions(ProjectFoo executable_name=ProjectFoo)
target_compile_definitions(ProjectFoo_UnitTests executable_name=ProjectFoo_UnitTests)

Внутри кода executable_name может использоваться для извлечения имени исполняемого файла:

#if executable_name==ProjectFoo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...