Я хочу сгенерировать и скомпилировать проект Visual Studio с помощью CMake. Мне нужно исключить файлы модульного тестирования из сборки.Есть ли способ сделать это? - PullRequest
1 голос
/ 04 июля 2019

Мой проект содержит файл модульного тестирования, который я хочу исключить из процесса компиляции. Я хочу изменить файл .vcxproj Visual Studio с помощью CMake. Какие могут быть возможные решения моей проблемы?

set_source_files_properties(BankTestCase_1.h PROPERTIES VS_DEPLOYEMENT_CONTENT 0)

set_source_files_properties(BankTestCase_1.h PROPERTIES EXCLUDE_FROM_BUILD 1)

1 Ответ

1 голос
/ 04 июля 2019

Во-первых, вы не изменяете файл .vcxproj. CMake генерирует один. Каждый раз, когда вы вызываете cmake, генерируется новый файл проекта. Вы должны сгенерировать его правильно.


В CMake уже определена функция, предназначенная только для добавления тестов. Это называется add_test

Это работает путем указания имени, а затем команды или исполняемой цели:

add_executable(my_test_exe testsrc1.cpp testsrc2.cpp)
add_test(NAME MyTest COMMAND my_test_exe)

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

add_executable(main_project
    src1.cpp
    src2.cpp
    src3.cpp
    src4.cpp
    # srctest1.cpp # not added
    # srctest2.cpp # not added too.
)

Также я заметил, что вы хотите удалить заголовочные файлы из компиляции. Заголовочные файлы не должны компилироваться вообще. Вы не должны добавлять их к своей цели.


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

list(REMOVE_ITEM globbed_files file/to/be_excluded.cpp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...