scons env.InstallAs () не копирует какой-либо файл? - PullRequest
0 голосов
/ 24 января 2019

Например, у меня есть .c файл, как показано ниже:

$ cat hello.c

int main(){
    return 0;
}

Затем я использую scons для сборки и копирования его в какое-то место:

$ cat SConstruct

import os,sys
env = Environment()
hello = env.Program('hello.c')
env.InstallAs('/home/admin/hello-new', hello)

запуск scons под пользователем с именем 'admin', который он печатает:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o hello.o -c hello.c
gcc -o hello hello.o
scons: done building targets.

Затем я попытался "ls / home / admin" там неттакая вещь, как "привет-новый".Поэтому мне интересно, почему мой "env.InstallAs ()" работал вообще?Как устранить неполадки и исправить это?

Спасибо.

1 Ответ

0 голосов
/ 24 января 2019

Пожалуйста, прочитайте FAQ, это распространенное заблуждение о SCons и, следовательно, в FAQ:

https://scons.org/faq.html#How_do_I_install_files.3F_The_Install.28.29_method_doesn.27t_do_anything._In_general.2C_how_do_I_build_anything_outside_my_current_directory.3F

Если ваш пример меняется на это, это должно заставить его всегда строить цельпод вопросом:

import os,sys
env = Environment()
hello = env.Program('hello.c')
install_target = env.InstallAs('/home/admin/hello-new', hello)

# Always build the install target by default
Default(install_target)
...