Я пытаюсь начать работу с premake, но не могу правильно связать свой тестовый проект с ним. Если я свяжу это руководство, оно будет работать нормально.
Я использую premake 4.3 (также тестировал его с premake 4.4) на OS X 10.9 с clang 3.4.
После того, как я создаю make-файл через «premake4 gmake» и пытаюсь скомпилировать его, я получаю сообщение об ошибке:
Linking subproject
ld: internal error: atom not found in symbolIndex(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc) for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [libsubproject.dylib] Error 1
make: *** [subproject] Error 2
Моя довольно простая настройка проекта:
project/
src/
test.cpp
subproject/
include/
Library.hpp
source/
Library.cpp
premake4.lua
premake4.lua
solution "testa"configurations {"debug"}
language "C++"
includedirs {"subproject/include"}
project "subproject"kind "SharedLib"files {"subproject/source/*.cpp"}
project "main"kind "ConsoleApp"files {"src/*.cpp"}
links {"subproject"}
SRC / test.cpp
#include <iostream>
#include <Library.hpp>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
Library lib(13, 3);
lib.do_stuff(7);
return 0;
}
субпроект / включать / Library.hpp
#ifndef __LIBRARY_HPP__
#define __LIBRARY_HPP__
#include <iostream>
using namespace std;
class Library {
public:
Library(int, int);
void do_stuff(int) const;
private:
int x;
int y;
};
#endif
подпроект / источник / Library.cpp
#include <Library.hpp>
Library::Library(int x, int y) {
this->x = x;
this->y = y;
}
void Library::do_stuff(int z) const {
cout << "X: " << x << "Y: " << y << "Z: " << z << endl;
}
Спасибо за ваше время.
Это известная ошибка перед созданием. Было сообщено и исправлено, но исправленная версия программы еще не выпущена. Смотрите обсуждение Вот.
Эта ошибка вызвана -Wl,-x
флаги компоновщика, которые premake добавит по умолчанию к project.make
Makefile. На данный момент существует два возможных решения: загрузить обновленный исходный код premake с исправлением, скомпилировать его и установить новую версию или вручную изменить значение LDFLAGS
в сгенерированном project.make
после каждого запуска premake.
Я также попробовал предложение, которое они дают в ссылке выше настройки premake.tools.gcc.ldflags.flags._Symbols
в nil
, но это не повлияло на мою систему.
Других решений пока нет …