Skulaurun Mrusal
Skulaurun Mrusal

Reputation: 2847

CMake & Visual Studio project setup

I'm writing my own minecraft launcher in c++ with Visual Studio 2019 IDE. I want it to be a cross-platform project. I decided to use CMake for this, but I have some problems with third party libraries.

FILE STRUCTURE

root
|---MyProject
|   |---build
|   |   |---Debug
|   |   |---Release
|   |---include
|   |   |---MyProject.hpp
|   |---src
|   |   |---MyProject.cpp
|   |   |---CMakeLists.txt
|   |---CMakeLists.txt
|---Vendor
|   |---CURL
|   |   |--- // source downloaded from https://curl.haxx.se/download/curl-7.64.1.tar.gz
|   |---CMakeLists.txt
|---CMakeLists.txt

I have some experience with linking libraries in visual studio's solutions, but I don't know how to do it in CMake.

I have two folders:

  1. My project (which I'm working on) folder with all the .cpp and .hpp files.
  2. Vendor folder for all the third party libs.

I want to link CMake projects in 'Vendor' to 'MyProject' to be able to use it in 'MyProject.cpp' and build it.

Example usage:

'MyProject.hpp':

#pragma once
#include <iostream>
#inlcude "curl/curl.h"

'MyProject.cpp':

int main() {
    // Hello World
    std::cout << "Hello world" << std::endl;
    // Some Curl stuff
    CURL* curl;
    ...
}

I tried something like this:

add_subdirectory("Vendor/CURL")
include_directories("Vendor/CURL/include")

I'm new to CMake and don't know how to do it... I was googling it for more than one hour, but I didn't find anything. BTW: Sorry for my english.

Upvotes: 3

Views: 333

Answers (1)

ap-osd
ap-osd

Reputation: 2834

To link to a 3rd party library you will need to specify the path and name of the library.

I have some experience with linking libraries in visual studio's solutions, but I don't know how to do it in CMake.

CMake link_directories maps to VS Properties->Linker->General->Additional Library Directories

CMake target_link_libraries maps to VS Properties->Linker->Input->Additional Dependencies

I'm new to CMake and don't know how to do it.

Take a look at CMake and Visual Studio which explains CMake in the context of Visual Studio with an example.

Upvotes: 1

Related Questions