diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-03-19 06:39:00 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2018-03-19 06:41:14 +0100 |
commit | b44ff4ec7d2c2458aab04b5daf79134e5d284f6e (patch) | |
tree | bf9aeda4e95c333f0da049d3b194ed994a20ec21 /src | |
parent | 2a8f23ff8aa29514d8e003ecce1808aa242af292 (diff) |
Fix compile error when having dependency on static library that has
dependency on dynamic libraries
Static libraries need to be defined before dynamic libraries when
building executable, otherwise you get linking error
Diffstat (limited to 'src')
-rw-r--r-- | src/CmakeModule.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/CmakeModule.cpp b/src/CmakeModule.cpp index 35e4884..990bf36 100644 --- a/src/CmakeModule.cpp +++ b/src/CmakeModule.cpp @@ -41,20 +41,23 @@ namespace sibs allLinkerFlags += binaryDependency; } #endif + + string staticLinkerFlags; if (!staticLinkerFlagCallbackFunc || (config.getPackageType() == PackageType::DYNAMIC || config.getPackageType() == PackageType::LIBRARY)) { - staticLinkerFlagCallbackFunc = [&allLinkerFlags](const string &linkerFlag) + staticLinkerFlagCallbackFunc = [&staticLinkerFlags](const string &linkerFlag) { - allLinkerFlags += " "; - allLinkerFlags += linkerFlag; + staticLinkerFlags += " "; + staticLinkerFlags += linkerFlag; }; } + string dynamicLinkerFlags; // TODO: If project contains no source files, then we shouldn't override this function - dynamicLinkerFlagCallbackFunc = [&allLinkerFlags](const string &linkerFlag) + dynamicLinkerFlagCallbackFunc = [&dynamicLinkerFlags](const string &linkerFlag) { - allLinkerFlags += " "; - allLinkerFlags += linkerFlag; + dynamicLinkerFlags += " "; + dynamicLinkerFlags += linkerFlag; }; // TODO: Create a cmake module that contains library/include path for the dependencies (https://cmake.org/Wiki/CMake:How_To_Find_Libraries). @@ -105,6 +108,8 @@ namespace sibs Result<bool> globalLibResult = GlobalLib::getLibs(globalLibDependencies, config, globalLibDir, staticLinkerFlagCallbackFunc, dynamicLinkerFlagCallbackFunc, globalIncludeDirCallback); if(!globalLibResult) return globalLibResult; + + allLinkerFlags += staticLinkerFlags + dynamicLinkerFlags; Result<bool> createBuildDirResult = createDirectoryRecursive(buildPath.c_str()); if (createBuildDirResult.isErr()) |