2013-07-25 2 views
3

Я хочу включить ws2_32.lib в мое приложение, но CMake tacks на -l на свойства проекта.Как добавить библиотеки Windows в CMake?

... 
add_executable(Executive ${exec_src}) 
target_link_libraries(Executive ws2_32) 

Так что это то, что мой файл CMakeLists.txt выглядит, но когда я просматриваю страницу VS2010 Linker свойств в разделе «Ввод» он перечисляет -lws2_32.lib. Почему он добавляет -l? И как я могу удалить это, потому что, как только я вручную изменил его на ws2_32.lib, проект может правильно связать.

Я пробовал следующее: find_library(WIN_C ws2_32), но результат был NOTFOUND.

+0

Какой генератор вы используете? 'Visual Studio'? – arrowd

ответ

1

Я столкнулся с той же проблемой, используя генератор Visual Studio 2010 и CMake 2.8.11.2. В моем случае я пытался связаться с wininet.lib. Я предполагаю, что это ошибка в CMake, и я долгое время искал обходной путь. В конце концов я обнаружил, что следующие работы:

Используйте команду find_library, чтобы найти абсолютный путь к файлу .lib и назначить его переменной. Затем используйте эту переменную в вашей команде target_link_libraries. В вашем случае это будет выглядеть так:

find_library(ws2_32_LIBRARY_PATH ws2_32) 
add_executable(Executive ${exec_src}) 
target_link_libraries(Executive ${ws2_32_LIBRARY_PATH}) 

Надеюсь, что это поможет кому-то.

2

С моего предыдущего ответа я нашел лучший подход.

В начале вашего выхода CMake вы видите что-то вроде этого ?:

The C compiler identification is unknown 
The CXX compiler identification is unknown 

Если это так, то кажется, что CMake не правильно определить ваш компилятор - и так не правильно работать, как пройти ссылки.

В моем случае это похоже на то, что он был смущен набором инструментов, которые я установил. У меня есть различные версии инструментов VS2010 express, а также TFS Team Explorer - который устанавливает оболочку Visual Studio. Похоже, что CMake видел присутствие devenv.exe и предполагал, что у меня есть полная визуальная студия.

Вы можете исправить это, указав переменную CMAKE_MAKE_PROGRAM - в командной строке с -D CMAKE_MAKE_PROGRAM или в графическом интерфейсе, отметив расширенный флажок и найдите запись. Мне нужно было изменить его с C: /PROGRA~2/MICROS~1.0/Common7/IDE/devenv.com на C: /PROGRA~2/MICROS~1.0/Common7/IDE/VCExpress.exe - отметить косые черты!

Как только я сделал это, мне больше не нужно было делать find_library.

Смежные вопросы