Does Conan install build dependencies when building from source? - conan

E.g. if my package requires gcc to build and gcc is not present on the target system, will it be installed when building my package from source? If so, how do I specify build dependencies for my package? They may be different for different systems.

Conan does not install anything that it is not instructed to install.
For installing build dependencies, there is the concept of build_requires
They can be declared:
In the package recipe, for specific tools to that package. Could be, for example, a testing library (it is a build-require, only required for build & test, but not required once you have the binary. It doesn't affect the final binary)
In a profile: This is for general tools, things that mostly apply to all dependencies. They are declared here by the final user, who can choose this way to use their system installed tools, or a tool installed by conan.
There are existing packages for tools for CMake, and MinGW in Bintray (conan-center, bincrafters repos)
Packages in conan are installed at the user level, no root required. Those tools (CMake, MinGW) are easy to install and operate at the user level. It is, however, not very typical to have gcc compilers in Linux at the user level. I am not aware of conan packages for Linux gcc, though might be possible to build them, either as full package or as a thin wrapper over the system one. This latter might be more difficult to provide switches between different compiler versions installed in the system.

Related

Shipping OS-specific binaries in an IntelliJ plugin

I am evaluating the creation of an IntelliJ IDEA plugin which would ship OS-specific binaries, for macOS, Linux and Windows.
The binaries are fairly large, so I don't want to ship binaries for the 3 OS in the same plugin archive. Is it possible to create OS-specific zip archives for an IntelliJ plugin?
It's not possible to make 3 different binaries for the one plugin.
Different approaches you can take:
3 different plugins. Shared code can be put in a different code module
The plugin downloads the binary upon startup from a private server (ftp / nexus)
Install the binaries separately, and have the plugin find the binaries via an environment variable
Good luck!

Install webdriver globally or localy?

The manual states that
You can also install the package globally on your machine and use the
wdio directly from the command line. However it is recommended to
install it per project.
Why is that? What downfall should I worry if installing globally?
If you only wish to use webdriver only in your shell regardless of any project then you can install it globally. However, if you wish to use it in a project, such that it is required to run project tests then install it locally (in this case it should be devDependency). The reasons are:
1) When multiple people working on a project, it is ensured that all of them have the same versions of the required packages.
2) Portability. The project dependencies should be completely defined in package.json so that after running npm install the project is ready to use in every environment.
For people new to NPM and Node, I'd recommend a global install to keep it simple. There are reasons to install it locally though, mostly to do with version compatibility and ease of project sharing: https://www.joezimjs.com/javascript/no-more-global-npm-packages/

Using KDevelop during development of a shared library

I'm trying to use KDevelop as an IDE for development of a C++ shared library. An earlier posts here indicate that I need to edit a CMake makefile for doing that. This is quite painful and very time consuming as it means converting our custom gmake-oriented build system into something of CMake.
Is there any other way for doing that?
KDevelop doesn't force you to use a specific buildsystem like many other IDEs do. CMake is just the default as it's very well integrated and many if not all KDE projects use cmake.
You can use a different build system by choosing "Custom Buildsystem" or "Custom Makefile Project Manager".
Custom Makefile Project Manager simply calls "make" - your current build system should work this that.

Avoiding platform-dependent dependencies when creating Eclipse Plugin

We are developing an Eclipse plugin for graphic editing of task graphs and then stores the serialized version in XML. We have used EMF and GMF to build our plugin, and were able to package and test it on win32 systems.
However, when we try to use install on other systems (64-bit windows, Linux), we get the
requires 'org.eclipse.core.filesystem.win32.x86[1.1.200.v20100505-1235]'
error.
We are not explicitly calling a win32 filesystem method, and I thought that although the plugin was developed on a win32 system, the plugin's dependency would only be on the org.eclipse.core.filesystem package, which would be resolved locally at install time on the user's machine.
Am I missing something? Should I edit a specific (autogenerated) file and remove the reference to the win32 package mention?
Thanks in advance for your time.
-A
org.eclipse.core.filesystem is the plugin and org.eclipse.core.filesystem.win32.x86 is a fragment. Ideally you should have dependency on the plugin only. How did the fragment end up as a dependency in your plugin? You can safely remove the fragment from your dependency

pjsip using cmake

Has someone compiled pjsip using cmake?
The project does not have a way of using CMake to build the library itself (yet). But you can link to pjproject libs from your CMake project.
Here's a snippet from one of mine that uses pjproject as a dependency:
find_package(PKGCONFIG REQUIRED)
pkg_check_modules(PJSIP libpjproject>=1.14 REQUIRED)
include_directories(${PJSIP_INCLUDE_DIRS})
...
target_link_libraries(your_target ${PJSIP_LIBRARIES})
This requires pkg-config as well, and that pjproject.pc should be in it's default search path, or in directory in $PKG_CONFIG_PATH.
This should work on Linux and OS X.
I just made cmake-based compilation of PJSIP v2.3.
I use this compilation only on Windows platform for now, not tested on linux.
On Linux I recommend use PKG_CONFIG tool to discover PJSIP for your app.
Having peeked at their repository, the project is auto-tools/configure based. You would need to port the build system yourself. Depending on complexity, it is not that hard to accomplish. I have converted many projects to cmake. Maybe the pjsip comunity would welcome an upgrade to their build system, as I see they support multiple platforms like iphone, and windows through visual studio.
If you are using Clion IDE then it can automatically generate cmake file for pjproject. Just import it and it will open a wizard. You’ll need to specify the location of the sources, then select project files and include directories. Clion has the ability to make the cmake file from existing projects. for more help please see this link Clion Documentation