Это не относится к объекту окна. В JavaScript можно получить доступ к любому свойству объекта. Например,
var test = {
prop1 : true
};
console.log(test.prop1); // true
console.log(test["prop1"]); // also true
Подробнее здесь: https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects
Если вам не нужны тесты в выпуске вашего проекта (которые вы хотите поставить с помощью CPack), тогда условно укажите подкаталог googletest
и установите для параметра false значение false при упаковке:
...
if(NOT DISABLE_TESTS)
add_subdirectory(googletest)
endif()
упаковка с
cmake -DDISABLE_TESTS=ON <source-dir>
cpack
Альтернативно, если вы хотите тесты, но не хотите устанавливать инфраструктуру тестирования, вы можете отключить команду install
посредством определения макроса или функции с тем же именем:
# Replace install() to do-nothing macro.
macro(install)
endmacro()
# Include subproject (or any other CMake code) with "disabled" install().
add_subdirectory(googletest)
# Restore original install() behavior.
macro(install)
_install(${ARGN})
endmacro()
Этот подход также был предложен в рассылке CMake .
Итак, есть опция macro @Tsyvarev, которая была первоначально предложена здесь здесь :
# overwrite install() command with a dummy macro that is a nop
macro (install)
endmacro ()
# configure build system for external libraries
add_subdirectory(external)
# replace install macro by one which simply invokes the CMake
install() function with the given arguments
macro (install)
_install(${ARGV})
endmacro(install)
Примечание ${ARGV}
и ${ARGN}
совпадают, но документы в настоящее время предложите использовать ${ARGN}
. Также тот факт, что макро-переписывание добавляет _
к исходному имени макроса, не документируется, но это по-прежнему поведение. См. Код здесь .
Однако , я никогда не получил вышеуказанный код для правильной работы. Действительно, действительно странные вещи и часто называет install()
дважды.
Альтернатива - также недокументированная - использовать EXCLUDE_FROM_ALL
:
add_subdirectory(external EXCLUDE_FROM_ALL)
Согласно некоторым комментариям, которые я нашел где-то, это отключает install()
для этого подкаталога. Я думаю, что он действительно делает EXCLUDE_FROM_ALL
по умолчанию для всех команд install()
, которые также, вероятно, делают то, что вы хотите. Я действительно не тестировал его, но стоит того.
Немного поздно ответ, но я просто потратил слишком много времени на это.
В конкретном случае googletests, указав это на вашем верхнем уровне, CMakeLists.txt делает трюк.
option(INSTALL_GMOCK "Install Googletest's GMock?" OFF)
option(INSTALL_GTEST "Install Googletest's GTest?" OFF)
add_subdirectory(googletest)
Я прочитал (я думаю) список рассылки CMake, который делает установку условным на INSTALL_<package name>
внутри вашего пакета своего рода стандартом defacto (и я обязательно буду следовать с этого момента! ). Но я не могу найти эту ссылку сейчас.
Can I overwrite it for the current directory (including subdirectories) only?
- Именно так должно работать определение функции. Я проверю это позже. – Tsyvarev 12 February 2016 в 14:34install()
в сообщении ответа. – Tsyvarev 8 February 2017 в 20:40install(DIRECTORY ...)
в другом подкаталоге не устанавливается. – Timmmm 9 February 2017 в 12:23install
, оба вызываются. Не важно в этом случае, но как странно это? – Timmmm 9 February 2017 в 12:36