файлы qmake и prl - PullRequest
       48

файлы qmake и prl

0 голосов
/ 30 января 2020

Я пытаюсь понять, как работают файлы prl. Работая на компьютере Windows, я создал две библиотеки stati c, lib1.lib (экспорт void my_lib1_func()) и lib2.lib (экспорт void my_lib2_func(), который использует my_lib1_func). Затем я создаю консольное приложение, которое статистически связываю с lib2.lib. К сожалению, при попытке его скомпилировать компилятор жалуется, что не может найти my_lib1_func.

. У меня сложилось впечатление, что файлы prma qmake решат эту проблему, как объяснено здесь , но к сожалению, мне не удалось его использовать. Ниже приведен исходный код, есть несколько файлов, но они тривиальны. Структура структуры каталогов выглядит следующим образом:

    root
    |---my_lib1
        |---my_lib1.pro
        |---my_lib1.cpp
        |---my_lib1_header.h
    |---my_lib2
        |---my_lib2.pro
        |---my_lib2.cpp
        |---my_lib2_header.h
    |---main
        |---main.pro
        |---main.cpp


//my_lib1_header.h
#pragma once
void my_lib1_func();



// my_lib1.cpp
#include <iostream>
#include "my_lib1_header.h"

void my_lib1_func() {
    std::cout << "Hello" << std::endl;
}



#my_lib1.pro

TEMPLATE = lib

HEADERS += my_lib1_header.h
SOURCES += my_lib1.cpp

TARGET = my_lib1
CONFIG += static create_prl
CONFIG -= qt



//my_lib2_header.h
#pragma once

void my_lib2_func();




//my_lib2.cpp
#include "../my_lib1/my_lib1_header.h"
#include "my_lib2_header.h"
#include <iostream>

void my_lib2_func() {
    my_lib1_func();
    std::cout << "World" << std::endl;
}




#my_lib2.pro

TEMPLATE = lib

SOURCES += my_lib2.cpp

CONFIG += static link_prl create_prl
CONFIG -= qt

CONFIG(debug, debug|release) {
    LIBS += ../my_lib1/debug/my_lib1.lib
}

CONFIG(release, debug|release) {
    LIBS += ../my_lib1/release/my_lib1.lib
}



// main.cpp
#include "../my_lib2/my_lib2_header.h"

int main() {
    my_lib2_func();
}




#main.pro
TEMPLATE = app
CONFIG -= qt
CONFIG += console link_prl

CONFIG(debug, debug|release) {
    LIBS += ../my_lib2/debug/my_lib2.lib
}

CONFIG(release, debug|release) {
    LIBS += ../my_lib2/release/my_lib2.lib
}

SOURCES += main.cpp

Полученный Makefile для main. cpp связывается с my_lib2.lib, но не с my_lib1.lib, несмотря на генерируемый файл prl. Любая помощь будет оценена!

...