2017-09-27 1 views
0

J'ai des problèmes avec Cmake. Il semble que j'ai fait quelque chose qui fait que Cmake ajoute des arguments quand je démarre mon projet. Voici ma configuration d'exécution.CMake - Supprimer les arguments

Current settings

Quand je déboguer je peux voir que argv a la valeur:

"/home/gel/unix/DB1457--LAB2/cmake-build-debug/lab2" 

(Il est le chemin de l'objet-fichier compilé).

Si quelque chose, il devrait être -p 8080, non?

Voici mes CMakeLists:

cmake_minimum_required(VERSION 3.8) 
project(lab2) 

set(CMAKE_C_STANDARD 99) 

file(GLOB_RECURSE SORUCE_FILES "webserver/src/*.c") 
file(GLOB_RECURSE SOURCE_HEADERS "webserver/includes/*.h") 


set(INCLUDE_DIRS "webserver/includes") 
foreach (_headerFile $(SOURCE_HEADERS)) 
    get_filename_component(_dir ${_headerFile} PATH) 
     list (APPEND INCLUDE_DIRS ${_dir}) 
endforeach() 
list(REMOVE_DUPLICATES INCLUDE_DIRS) 

include_directories(${INCLUDE_DIRS}) 
add_executable(lab2 ${SORUCE_FILES} ${HEADER_FILES}) 

set(THREADS_PREFER_PTHREAD_FLAG ON) 
find_package(Threads REQUIRED) 
target_link_libraries(lab2 Threads::Threads) 

Répondre

0

Non, la première chaîne de argv est toujours le chemin de l'exécutable. Les paramètres réels commencent à l'index 1.

Dans votre exemple argv[1] contiendra "-p" et argv[2] aura "8080" car ils sont deux paramètres distincts. Si vous voulez qu'ils soient passés en tant que paramètre, vous devez les placer entre guillemets ou supprimer l'espace entre eux.