2017-09-27 92 views
0

我在Cmake遇到了一些麻烦。看起来我已经做了一些让Cmake在开始我的项目时添加参数的东西。以下是我的运行配置。CMake - 删除参数

Current settings

当我调试它,我可以看到argv的数值:

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

(这是路径编译对象文件)。

如果有什么,它应该是-p 8080,对不对?

这里是我的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) 

回答

0

不,argv第一个字符串始终是可执行文件的路径。实际参数从索引1开始。

在您的示例中,argv[1]将包含“-p”,并且argv[2]将具有“8080”,因为它们是两个单独的参数。如果您希望将它们作为一个参数传递,则需要将它们放在引号中或删除它们之间的空格。