In the directory where you want to create the project, run (obviously, replace mypackage
by the name of everywhere in our code!)
conan new mypackage/1.0.0 -s
-s
is important here. It tells conan that the source is available in the project directory and it should not be pulled using git etc.
This will initialize a shared library project, which we will now modify to build an executable.
First, open src/CMakeLists.txt
and change add_library()
to add_executable()
, for example
add_library(mypackage mypackage.cpp)
to
add_executable(mypackage mypackage.cpp)
Now we shall modify conanfile.py
to properly build & install the executable:
def package(self): self.copy("*.h", dst="include", src="src") self.copy("*.lib", dst="lib", keep_path=False) self.copy("*.dll", dst="bin", keep_path=False) self.copy("*.dylib*", dst="lib", keep_path=False) self.copy("*.so", dst="lib", keep_path=False) self.copy("*.a", dst="lib", keep_path=False) def package_info(self): self.cpp_info.libs = ["NoxecoDB"]
with
def package(self): self.copy("mypackage", src="bin", dst="bin", keep_path=False) def package_info(self): self.env_info.PATH = os.path.join(self.package_folder, "bin") def deploy(self): self.copy("mypackage", dst="bin", src="bin")
and add
import os.path
to the top of the file
Now let’s add a main()
function to src/mypackage.cpp
. Replace the file’s content with
#include <iostream> int main(int argc, char** argv) { std::cout << "Hello World!" <<std::endl; }
Now it’s time to install the dependencies & build the project using
conan install . && conan build .
The executable will be in
bin/mypackage
You can run it using
./bin/mypackage
which will print
Hello World!
I also recommend to add this .gitignore
:
CMakeCache.txt CMakeFiles/ Makefile bin/ cmake_install.cmake conan.lock conanbuildinfo.cmake conanbuildinfo.txt conaninfo.txt graph_info.json