[Moscow.pm] XS, c-files, ExtUtils::MakeMaker

Dmitry Karasik dmitry на karasik.eu.org
Сб Июл 28 07:36:45 PDT 2012


я делал такой хак:

my $coflag = ( $Config{ccname} eq 'cl' ) ? '/Fo' : '-o';

sub c_o
{
	my $t = shift-> SUPER::c_o(@_);
	unless ( $t =~ /.c\$\(OBJ_EXT\):\n\t.*\$\*\$\(OBJ_EXT\)/ ) {
		$t =~ s/(\.c\$\(OBJ_EXT\):\n\t.*)/$1 $coflag \$*\$(OBJ_EXT)/;
	}
	return $t;
}

Это старый код, и если бы я его делал сегодня, смотрел бы в сторону
более новых тулзов типа ExtUtils::CBuilder или Module::Build, хоть я
последний и не люблю

/dk

On Sat, Jul 28, 2012 at 12:54:44AM +0400, Ivan Petrov wrote:
> есть желание десятко C-файлов одного XS-модуля запхать в
> поддиректорию.
> 
> соответственно по документации пишу:
> 
> 
> WriteMakefile(
>     ...
>     C => [ 'src/1.c', 'src/2.c' ],
>     OBJECT => '${O_FILES}',
> 
>     ...
> );
> 
> далее генерится makefile, который выдает серию команд
> 
> cc -c ... src/1.c
> cc -c ... src/2.c
> 
> и так далее
> 
> в итоге кладет 1.o, 2.o в текущий каталог, а затем дает команду на
> линкинг
> 
> cc .. src/1.o src/2.o
> 
> и тут соответственно не находит 1.o и 2.o поскольку они лежат в
> текущем каталоге а не в src где он их ищет.
> 
> пробовал написать
> 
> OBJECT => '1.o 2.o'
> 
> но в этом случае он отказывается компилировать c-файлы.
> 
> как вылечить?
> -- 
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org

-- 
Sincerely,
	Dmitry Karasik



Подробная информация о списке рассылки Moscow-pm